AbortController — must-have; fetch по умолчанию; abort ≠ rollback на сервере.
Разбор
- Всегда abort при unmount / смене маршрута, иначе поздний ответ обновит размонтированный компонент — warning React и утечки. В React — controller в cleanup effect'а.
fetch вместо XHR по умолчанию — чище, streamable, стандарт. XHR/Axios только для upload progress.
- Abort — не rollback. Запрос мог дойти до сервера и изменить state; abort останавливает только клиента. Не abort'ить неидемпотентный
POST и думать, что «не случилось».
- Не крутить retry/dedupe/cache на каждый вызов. На масштабе app data layer (TanStack Query, SWR, RTK Query) даёт cancellation, dedupe, stale-while-revalidate — reinventing per-component — smell.
Итог
Abort в cleanup, fetch + data layer, помнить про неидемпотентный POST на сервере.