From 8564d3611f893a62afe43a127fe33a868089d718 Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Thu, 28 Sep 2023 15:47:58 +0900 Subject: [PATCH 1/4] fix(ext/http): Deno.Server should not be thenable Otherwise you can not return `Deno.Server` from async functions. --- cli/tests/unit/serve_test.ts | 11 +++++++++++ ext/http/00_serve.js | 6 ------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/cli/tests/unit/serve_test.ts b/cli/tests/unit/serve_test.ts index 193b04ed148d23..867502ade10c3b 100644 --- a/cli/tests/unit/serve_test.ts +++ b/cli/tests/unit/serve_test.ts @@ -3715,3 +3715,14 @@ async function curlRequestWithStdErr(args: string[]) { assert(success); return [new TextDecoder().decode(stdout), new TextDecoder().decode(stderr)]; } + +Deno.test("Deno.Server is not thenable", async () => { + // deno-lint-ignore require-await + async function serveTest() { + const server = Deno.serve({ port: servePort }); + assert(!("then" in server)); + return server; + } + const server = await serveTest(); + server.close(); +}); diff --git a/ext/http/00_serve.js b/ext/http/00_serve.js index aeebca93dfe870..d5b71ce0aef618 100644 --- a/ext/http/00_serve.js +++ b/ext/http/00_serve.js @@ -38,7 +38,6 @@ import { listen, TcpConn } from "ext:deno_net/01_net.js"; import { listenTls } from "ext:deno_net/02_tls.js"; const { ArrayPrototypePush, - Error, ObjectPrototypeIsPrototypeOf, PromisePrototypeCatch, Symbol, @@ -664,11 +663,6 @@ function serveHttpOn(context, callback) { context.closed = true; } }, - then() { - throw new Error( - "Deno.serve no longer returns a promise. await server.finished instead of server.", - ); - }, ref() { ref = true; if (currentPromise) { From 60419bec0662855ee1495e638c83cc4f7df26f8f Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Sat, 30 Sep 2023 11:27:51 +0900 Subject: [PATCH 2/4] Update cli/tests/unit/serve_test.ts Co-authored-by: Yoshiya Hinosawa --- cli/tests/unit/serve_test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/tests/unit/serve_test.ts b/cli/tests/unit/serve_test.ts index 867502ade10c3b..85a203087cdbc1 100644 --- a/cli/tests/unit/serve_test.ts +++ b/cli/tests/unit/serve_test.ts @@ -3719,7 +3719,7 @@ async function curlRequestWithStdErr(args: string[]) { Deno.test("Deno.Server is not thenable", async () => { // deno-lint-ignore require-await async function serveTest() { - const server = Deno.serve({ port: servePort }); + const server = Deno.serve({ port: servePort }, (_) => {}); assert(!("then" in server)); return server; } From 80e9845252ba6381f809de053c8be8a1b9116626 Mon Sep 17 00:00:00 2001 From: Yoshiya Hinosawa Date: Sun, 1 Oct 2023 06:25:07 +0900 Subject: [PATCH 3/4] Update cli/tests/unit/serve_test.ts --- cli/tests/unit/serve_test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/tests/unit/serve_test.ts b/cli/tests/unit/serve_test.ts index 85a203087cdbc1..3ad134e767f7a4 100644 --- a/cli/tests/unit/serve_test.ts +++ b/cli/tests/unit/serve_test.ts @@ -3719,7 +3719,7 @@ async function curlRequestWithStdErr(args: string[]) { Deno.test("Deno.Server is not thenable", async () => { // deno-lint-ignore require-await async function serveTest() { - const server = Deno.serve({ port: servePort }, (_) => {}); + const server = Deno.serve({ port: servePort }, (_) => new Response("")); assert(!("then" in server)); return server; } From d239ecbb3fc03300ecbd55ba30cf8631f0afeed2 Mon Sep 17 00:00:00 2001 From: Yoshiya Hinosawa Date: Sun, 1 Oct 2023 15:24:35 +0900 Subject: [PATCH 4/4] close -> shutdown --- cli/tests/unit/serve_test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/tests/unit/serve_test.ts b/cli/tests/unit/serve_test.ts index 3ad134e767f7a4..0017549d3b4056 100644 --- a/cli/tests/unit/serve_test.ts +++ b/cli/tests/unit/serve_test.ts @@ -3724,5 +3724,5 @@ Deno.test("Deno.Server is not thenable", async () => { return server; } const server = await serveTest(); - server.close(); + await server.shutdown(); });