Viene sollevata fisiologicamente dalla funzione fetch() quando il segnale associato ('signal: controller.signal') riceve un'istruzione 'controller.abort()'; il codice deve intercettare 'if (err.name === "AbortError")' per non considerarlo un crash.
DOMEXCEPTION_ABORTERROR
→
Una ricorsione asincrona non terminata basata su 'Promise.resolve().then(loop)' o 'queueMicrotask' svuota continuamente la coda dei microtask senza mai rilasciare il controllo all'Event Loop per il rendering del browser, congelando la pagina.
EVENT_LOOP_STARVATION
→
Il metodo 'arr.forEach(async (item) => { await save(item); })' non attende le promise generate dalla callback; il ciclo termina istantaneamente prima del completamento dei salvataggi; occorre utilizzare un normale ciclo 'for (const item of arr)' o 'Promise.all(arr.map(...))'.
FOREACH_ASYNC_PITFALL
→
Quando 'Promise.race([fetchData, timeout])' scade per timeout, la promise di rete non viene cancellata automaticamente ma continua a eseguire e allocare memoria in background; occorre collegarvi un segnale di abort esplicito.
PROMISE_RACE_LEAK
→
Il metodo 'Promise.all([p1, p2, p3])' interrompe immediatamente l'attesa e restituisce rejection se anche una sola delle promise fallisce; per attendere il completamento di tutte le chiamate indipendentemente dall'esito si usa 'Promise.allSettled()'.
PROMISE_ALL_FAIL_FAST
→
In un'interfaccia con ricerca in tempo reale (autocomplete), una richiesta precedente più lenta può completarsi dopo una richiesta più recente sovrascrivendo i dati a video; si risolve annullando la richiesta precedente con 'AbortController'.
FETCH_RACE_CONDITION
→
L'uso di 'await' al di fuori di funzioni async nel corpo principale del file richiede Node.js 14.8+ o configurazioni Webpack/Vite/TypeScript aggiornate con target ECMAScript 2022 o superiore.
TOP_LEVEL_AWAIT_ERROR
→
Una Promise asincrona è stata rifiutata (rejected) o una funzione 'async' ha sollevato un'eccezione senza che il codice chiamante abbia concatenato un blocco '.catch()' o un 'try/catch' attorno all'await.
ASYNC_UNHANDLED_REJECTION
→