Em alguns casos a mensagem de erro apresentada era sempre a contida no else, a 500 por exemplo. Isso se dava porque o CastError do mongoose não conseguia instaciar a mensagem de erro vinda do controlador do autor, no meu caso era porque eu estava passando no next() a variável next, o correto é passar o erro declarado no catch, next (erro).