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.