В своем коде вы звоните finally
, который вызывается независимо от того, успешно или нет ошибка аутентификации. Попробуйте убрать звонок на finally
.
Почему ваш код 404 вызывался до then / catch? Потому что он не был внутри обратного вызова finally, а просто вызывался в обработчике записи.
Если вы закодируете это так:
finally( () => res.status(400).json({...}) )
Он будет вызван после then / catch. Ваш код сделал это раньше. Он был оценен до того, как Обещание было разрешено или отклонено.
Посмотрите на следующий пример
function sendError() {
...
}
getUser()
.then(response => ...)
.catch(err => ... )
.finally( sendError() );
В моем примере sendError
всегда вызывается перед getUser (). Это то же самое в вашем коде.
Тем не менее, если вы сделаете это правильно в обратном вызове для finally
, это выдаст ошибку, потому что ответ уже отправлен.
Надежды, которые делают его ясно