- From: James Browning <notifications@github.com>
- Date: Tue, 02 Feb 2021 22:26:18 -0800
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/927/772266979@github.com>
> Worth mentioning that for Node it would be more convenient if the method Domenic is proposing was on `AbortController` or `AbortSignal` and not on `DOMException` since we can't guarantee internal methods will always throw `DOMException`s and DOMException isn't exposed as a global.
One option would be to add a global `AbortError` constructor, which delegates to whatever a given host thinks is appropriate. For example in browsers it could just be:
```js
function AbortError(message="Aborted") {
throw new DOMException(message, "AbortError");
}
```
In node it might vend something different (but still with `.name === 'AbortError'`).
While @jakearchibald's suggestion is great for checkpoints, it doesn't quite work for cases where you need to produce an `AbortError` asynchronously e.g.:
```js
function animationFrame(abortSignal) {
return new Promise((resolve, reject) => {
abortSignal?.assertNotAborted(); // Checkpoint use case as suggested in OP
const frameRequest = requestAnimationFrame(time => resolve(time));
abortSignal?.addEventListener("abort", () => {
cancelAnimationFrame(frameRequest);
reject(new AbortError()); // Case I'm suggesting, this isn't covered by OP
}, { once: true });
});
}
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/issues/927#issuecomment-772266979
Received on Wednesday, 3 February 2021 06:26:31 UTC