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/http/00_serve.ts | |
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/http/00_serve.ts')
-rw-r--r-- | ext/http/00_serve.ts | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/http/00_serve.ts b/ext/http/00_serve.ts index 8cfd7ad53..7bf83e49c 100644 --- a/ext/http/00_serve.ts +++ b/ext/http/00_serve.ts @@ -11,10 +11,10 @@ import { op_http_cancel, op_http_close, op_http_close_after_finish, - op_http_get_request_cancelled, op_http_get_request_headers, op_http_get_request_method_and_url, op_http_read_request_body, + op_http_request_on_cancel, op_http_serve, op_http_serve_on, op_http_set_promise_complete, @@ -375,11 +375,16 @@ class InnerRequest { return this.#external; } - get isCancelled() { + onCancel(callback) { if (this.#external === null) { - return true; + callback(); + return; } - return op_http_get_request_cancelled(this.#external); + + PromisePrototypeThen( + op_http_request_on_cancel(this.#external), + callback, + ); } } |