Цепочка обещаний не прерывается по возвращении после вылова исключения

Я использую 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(),

Это ожидаемое поведение? Если так, как я могу "разорвать цепь" или что-то в этом роде.

0 ответов

Другие вопросы по тегам