Ответ на Ваш вопрос есть в
офф документации
Там же описана причина возникновения события "unhandledRejection".
Вообще есть несколько решений этой задачи, например как это предложили
Сергей и
Владлен Хеллсайт здесь же в ответа.
Другие варианты:
let go = async () => {
throw new Error('Some Error');
}
// можно выловить ошибку в другой async функции
(async () => {
try{
await go()
}
catch(error){
console.error(error); // напечатать лог
process.exit(1); // вернуть код завершения отличный от нуля
}
})()
// Или повесить catch на функцию `go` , это тоже сработает
go().catch(error => {
console.error(error); // напечатать лог
process.exit(1); // вернуть код завершения отличный от нуля
})
P.S. Если задать вопрос: "Какой шаблон лучше использовать?". То тут мнения расходятся. Как по мне, так нужно стараться
всегда отлавливать ошибки, если это не возможно -- использовать process.on('unhandledRejection')