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 /tests/unit | |
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 'tests/unit')
-rw-r--r-- | tests/unit/serve_test.ts | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/unit/serve_test.ts b/tests/unit/serve_test.ts index 9822a0ce2..7d8c6ca06 100644 --- a/tests/unit/serve_test.ts +++ b/tests/unit/serve_test.ts @@ -4299,3 +4299,31 @@ Deno.test({ assert(cancelled); }); + +Deno.test({ + name: "AbortSignal event aborted when request is cancelled", +}, async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = Deno.serve({ + hostname: "0.0.0.0", + port: servePort, + onListen: () => resolve(), + }, async (request) => { + const { promise: promiseAbort, resolve: resolveAbort } = Promise + .withResolvers<void>(); + request.signal.addEventListener("abort", () => resolveAbort()); + assert(!request.signal.aborted); + + await promiseAbort; + + return new Response("Ok"); + }); + + await promise; + await fetch(`http://localhost:${servePort}/`, { + signal: AbortSignal.timeout(100), + }).catch(() => {}); + + await server.shutdown(); +}); |