18:23
<Jack Works>
If you can close/dispose a source, functions that receive the closed token can use more efficency code paths, and registrations that would have introduced closures can be skipped. A source that is left open instead of canceling/closing results in closures holding references to closed over values far longer than necessary. IIRC, AbortSignal doesn't even clean up user code registrations when aborted since user code registrations are event based
yeah, I always write signal.addEventListener('abort', f, { signal, once: true })