Re: [whatwg/dom] Add AbortSignal.any() (PR #1152)

Any chance I can raise the order of signals/event listeners for a minor revision before this lands?

I think it's really confusing adding `"abort"` listeners manually and adding them implicitly through `AbortSignal.any` has different execution order like in this test:

```js
  test(t => {
    const controller = new controllerInterface();
    const signals = [];
    // The first event should be dispatched on the originating signal.
    signals.push(controller.signal);
    // All dependents are linked to `controller.signal` (never to another
    // composite signal), so this is the order events should fire.
    signals.push(signalInterface.any([controller.signal]));
    signals.push(signalInterface.any([controller.signal]));
    signals.push(signalInterface.any([signals[0]]));
    signals.push(signalInterface.any([signals[1]]));

    let result = "";
    for (let i = 0; i < signals.length; i++) {
      signals[i].addEventListener('abort', () => {
        result += i;
      });
    }
    controller.abort();
    assert_equals(result, "01234");
  }, `Abort events for ${desc} signals fire in the right order ${suffix}`);
```

Which effectively behaves like there is a capability letting you listen to abort in arbitrary order namely: my expectation above is the log to be "41230" and not "01234" since AbortSignal.any "listens" on that signal before the "abort" listener.

So when we do `controller.abort` in the above test I'd expect the AbortSignal.any to get the "abort" listener (conceptually, I get that's not the machinery) first and then to fire any listeners they have attached.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/pull/1152#issuecomment-1532552185
You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/dom/pull/1152/c1532552185@github.com>

Received on Wednesday, 3 May 2023 07:07:42 UTC