Re: [whatwg/dom] Encourage use of AbortError for cancellation? (#927)

> Node.js doesn’t currently expose its DOMException and throws errors that look like the DOM AbortError but are not actually DOMExceptions (same name and same code but without some of the quirks - quite painful since Node.is codes have a different format)
> However since Node vendors certain bits of its core as user land modules (readable-stream) and exposing DOMException was a show stopper there we ended up with that compromise.

If Node doesn't expose `DOMException` how can we vend abort errors for cases like the reject example above? Doing something hacky is possible like `try { abortSignal.assertNotAborted(); } catch (err) { reject(err); }` but this seems awkward.

Just a thought I had, it could be possible to do it the other way around and have `.abort()` create an `AbortError` which is then attached to the abort event. This same exception would be thrown from `.assertNotAborted()` e.g.:

```js
const controller = new AbortController();

controller.abort("user left the page");

const { signal } = controller;


signal.addEventListener("abort", ({ abortError }) => {
  reject(abortError); // abortError has "user left the page" message
  doCleanup();
});

signal.assertNotAborted(); // throws the Abort Error with message "user left the page"
```

-- 
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-772882294

Received on Wednesday, 3 February 2021 22:55:09 UTC