Cancellation:
Room for improvement
Daniel Ehrenberg, Bloomberg
Ron Buckton, Microsoft
June 2024 TC39 meeting, Helsinki
Goals of a cancellation mechanism for JavaScript
Does AbortController/AbortSignal meet these goals?
Avoid unnecessary work
Unlink data structures
Nesting structure
async function foo({signal: outerSignal}) {� let innerController = new AbortController();� let innerSignal = AbortSignal.any([[� innerController.any, outerSignal]]);� fetch(..., {signal: innerSignal});�}
Separation of concerns
Easy to thread through
Usable from TC39
Next steps