You can't cancel a JavaScript promise (except sometimes you can)
JavaScript n'offre pas de méthode native pour annuler une promise et les tentatives d'ajout au langage ont été abandonnées en partie parce que l'annulation forcée peut laisser des ressources dans un état incohérent. Lancer une erreur pour interrompre un await peut être neutralisé par un try/catch inutilement et les générateurs permettent une interruption sûre mais imposent une syntaxe et des conventions moins ergonomiques et compliquent la concurrence. Une alternative consiste à retourner une promise qui ne se résout jamais et à laisser la fonction suspendue devenir inatteignable ; le ramasse‑miettes pourra alors libérer la pile suspendue sans lancer d'exception. Pour les workflows serverless, on peut réexécuter la fonction plusieurs fois en mémoïsiant les résultats d'étape, exécuter une seule nouvelle étape par invocation et utiliser setTimeout(0) pour laisser s'épuiser les microtasks avant de détecter la prochaine étape. La technique est utilisée en production (par exemple dans le SDK TypeScript d'Inngest) mais dépend du GC non déterministe et échoue si des références vers les promises ou closures suspendues subsistent.