Есть только два способа остановить это:
throw
внутри then
, который пропускает следующий , но запустит catch
- Верните что-то и затем используйте его, чтобы проверить, хотите ли вы выполнить код внутри следующего
then
Я думаю, что в вашем случае, похоже, что имеет смысл просто сгенерировать ошибку, которую вы создали, и затем позволить catch
распространить ее, например,
.then(user => {
if (user) {
const error = new Error(g.f('This {{email}} is already in use.'));
(error as HttpError).statusCode = 400;
(error as HttpError).code = 'EMAIL_NOT_VALID';
throw error;
}
})
.then(user => { ... }) // this part would skip
.catch(next) // you don't need to check if an error exists in `catch`, it will always exist