summaryrefslogtreecommitdiff
path: root/ext/fetch
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-11-08 18:46:11 +0530
committerGitHub <noreply@github.com>2024-11-08 18:46:11 +0530
commitb482a50299ae4f636a186038460e54af65e2b627 (patch)
tree0d9cb0f2348391b438efa133afd391b189ec0e30 /ext/fetch
parent637b1d5508293ed02bef2f317b30bb7c1f0cbc71 (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.js8
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;