Livro MEAN - 7.8: Buscando pelo ID, não lança Error

Olá,

Estou implementando a função obtemContato do controller (app/controllers/contato.js) e nos testes quando passado um ObjectID existente na collection, o json de retorno é devolvido corretamente, porém ao passar o um ObjectID não existente, aparentemente não está sendo lançado o erro e a página fica executando…

Função original:

controller.obtemContato = function(req,res){
    var _id = req.params.id;
    Contato.findById(_id).exec()
    .then(
        function(contato){
            if(!contato) throw new Error("Contato não encontrado");
            res.json(contato);
        },
        function(erro){
            console.log(erro);
            res.status(404).json(erro);
        }
    );
};

Consegui fazer o código funcionar com o comportamento esperado alterando a função para:

controller.obtemContato = function(req,res){
    var _id = req.params.id;
    Contato.findById(_id).exec()
    .then(
        function(contato){
            if(!contato) {
                res.status(404).json("Contato não encontrado.");
            } else {
                res.json(contato);
            }
        },
        function(erro){
            console.log(erro);
            res.status(404).json(erro);
        }
    );
};

Dessa maneira, fiquei com dois pontos do código retornando o 404.

Testei também com o código do gihub do cap-07 (https://github.com/flaviohenriquealmeida/mean-livro-codigo/tree/master/cap-07) mas o erro é o mesmo.

Alguém passou pela mesma situação?

Abraços!