Каждый фронтендер знает эту боль: пишешь запрос через fetch
- и автоматически добавляешь try/catch
. Где-то ловишь TypeError
, где-то 500-й статус, где-то подвисший запрос с AbortController
. В итоге половина кода в проекте - это обработка ошибок, а не бизнес-логика.
Я прожил с этим годами. Чем больше становился проект, тем больше росла копипаста: таймауты, ретраи, проверки на res.ok
, костыли для разных браузеров. Одно и то же, снова и снова.
И вот в какой-то момент я понял: проблема не в том, что ошибки случаются. Проблема в том, что сам fetch
вынуждает нас ловить их вручную, каждый раз, в каждом запросе.
Так появилась библиотека @asouei/safe-fetch. Маленькая (3kb), без зависимостей, но с тем, чего нет у самого fetch
: общий таймаут, умные ретраи, нормализованные ошибки и поддержка Retry-After
.
🌟 Библиотека добавлена в Awesome TypeScript — один из крупнейших мировых списков лучших TypeScript-проектов