feat(ext/http): abort event when request is cancelled (#26781)

```js
Deno.serve(async (req) => {
  const { promise, resolve } = Promise.withResolvers<void>();

  req.signal.addEventListener("abort", () => {
    resolve();
  });

  await promise;

  return new Response("Ok");
});
```
This commit is contained in:
Divy Srivastava 2024-11-08 18:46:11 +05:30 committed by GitHub
parent 637b1d5508
commit b482a50299
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 65 additions and 8 deletions

View file

@ -281,11 +281,11 @@ class Request {
if (signal === undefined) {
const signal = newSignal();
this[_signalCache] = signal;
return signal;
}
this[_request].onCancel?.(() => {
signal[signalAbort](signalAbortError);
});
if (!signal.aborted && this[_request].isCancelled) {
signal[signalAbort](signalAbortError);
return signal;
}
return signal;