Não consegui responder o tópico do Samuel, já estava fechado... Mas se mais alguém estiver tendo esse problema de não aparecer a mensagem de erro NaoEncontrado ao digitar um fornecedor ou produto inválido, é só adicionar a linha await Tabela.pegarPorId(id, fornecedor) antes de chamar o método atualizar() na rota de produtos. Fica assim:
// api > rotas > fornecedores > produtos > index.js
roteador.put("/:id", async (req, res, proximo) => {
    try {
        const id = req.params.id
        const fornecedor = req.fornecedor.id
        const dados = Object.assign(
            {},
            req.body,
            {
                id: id,
                fornecedor: fornecedor
            }
        )
        const produto = new Produto(dados)
        await Tabela.pegarPorId(id, fornecedor)
        await produto.atualizar()
        res.set("X-Powered-By", "Gatito")
        res.set("ETag", produto.versao)
        const timestamp = (new Date(produto.dataAtualizacao)).getTime()
        res.set("Last-Modified", timestamp)
        res.status(204)
        res.end()
    } catch(erro) {
        proximo(erro)
    }
})Dessa forma a verificação é feita antes da atualização.
 
            