Разница между обработчиком ошибок в асинхронном и синхронном коде заключается в используемых методах. 24
Для синхронного кода подойдёт конструкция try…catch, которая позволяет перехватывать ошибки и обрабатывать их глобально с помощью process.on(). 12
Для асинхронного кода необходимо использовать обработчик промисов, который перехватывает ошибки в цепочке и позволяет обрабатывать их с помощью одного обработчика для множества функций. 2 Например, в колбэках ошибки передаются в обратный вызов в виде первого аргумента, а в промисах ошибки обрабатываются с помощью метода catch. 4
Также для обработки ошибок в асинхронном коде с использованием async/await можно использовать конструкцию try…catch для оборачивания вызовов await. 14