diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-11-08 18:46:11 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-08 18:46:11 +0530 |
commit | b482a50299ae4f636a186038460e54af65e2b627 (patch) | |
tree | 0d9cb0f2348391b438efa133afd391b189ec0e30 /ext/fetch | |
parent | 637b1d5508293ed02bef2f317b30bb7c1f0cbc71 (diff) |
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");
});
```
Diffstat (limited to 'ext/fetch')
-rw-r--r-- | ext/fetch/23_request.js | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/ext/fetch/23_request.js b/ext/fetch/23_request.js index 22c17d6d2..61cac22d2 100644 --- a/ext/fetch/23_request.js +++ b/ext/fetch/23_request.js @@ -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; |