intermediate

Асинхронные ошибки и отмена

Rejections, try/catch вокруг await, сбой Promise.all, AbortController и устаревшие результаты.

`try/catch` вокруг `await` ловит rejections внутри async-функций. Неожидаемые Promise требуют `.catch()`, иначе будут unhandled rejections.

`AbortController` даёт кооперативную отмену — `fetch` и свой async-код должны проверять `signal.aborted`. Игнорирование устаревшего HTTP-ответа не равно отмене запроса.

Повторы неидемпотентных операций могут дублировать побочные эффекты. `Promise.all` отклоняется при первой ошибке.

На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.

Компромисс часто между ясностью и производительностью или между безопасностью и удобством.

Чеклист:

  • Ловите ошибки после await.
  • Обрабатывайте неожидаемые promises.
  • Используйте AbortController с cleanup.
  • Определите идемпотентность retry.