Цепочка обещаний не прерывается по возвращении после вылова исключения
Я использую Express для создания REST API с помощью Objection.js ORM. Один из методов моего контроллера имеет цепочку обещаний:
register(req, res) {
// ...
indicative.validateAll(req.body.data, rules)
.then(
() => {
const data = {
...req.body.data,
password: bcrypt.hashSync(req.body.data.password, bcrypt.genSaltSync()),
password_confirmation: undefined,
customer: {}
};
return models.User.query()
.insertGraph(data);
}
)
.catch( // catch block 1
(error) => {
console.log(error);
return response.error(res, 422, 'Dados de cadastro inválidos.');
}
)
.then(
(user) => {
return response.success(res, 'Usuário cadastrado com sucesso.', {
user: user
});
}
)
.catch( // catch block 2
(error) => {
console.log(error);
return response.error(res, 500, 'Erro interno, tente novamente.');
}
);
}
Когда исключение пойман на первом .catch()
блок возвращает ответ с ошибкой, но цепочка продолжает выполняться, и даже если я ничего не возвращаю в первом блоке перехвата, цепочка переходит к следующему .then()
,
Это ожидаемое поведение? Если так, как я могу "разорвать цепь" или что-то в этом роде.