Место обработки зависит от механизма ошибки, а не от двух секунд ожидания: синхронный throw идёт по стеку, отказ Promise — по цепочке ожидания.
A вызывается внутри B, B — внутри C. A работает две секунды и выбрасывает ошибку. Где она будет поймана?
Место обработки зависит от механизма ошибки, а не от двух секунд ожидания: синхронный throw идёт по стеку, отказ Promise — по цепочке ожидания.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Место обработки зависит от механизма ошибки, а не от двух секунд ожидания: синхронный throw идёт по стеку, отказ Promise — по цепочке ожидания.
Ближайший try/catch поймает синхронный вызов A через B и C. Для async A нужен await внутри try либо catch у возвращённого Promise; B должна не терять эту цепочку. Throw в отдельном callback таймера не поймается уже завершившимся внешним try/catch.