From ae81065c758a540aa61639e51372c1e254d92c9a Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Mon, 9 Oct 2023 12:43:14 +0900 Subject: [PATCH] fix(ext/http): Deno.Server should not be thenable (#20723) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise you can not return `Deno.Server` from async functions. Co-authored-by: Yoshiya Hinosawa Co-authored-by: Bartek IwaƄczuk --- 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 6f58db006b3fb5..2e560af9957f3b 100644 --- a/cli/tests/unit/serve_test.ts +++ b/cli/tests/unit/serve_test.ts @@ -3717,6 +3717,17 @@ async function curlRequestWithStdErr(args: string[]) { 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 }, (_) => new Response("")); + assert(!("then" in server)); + return server; + } + const server = await serveTest(); + await server.shutdown(); +}); + Deno.test( { ignore: Deno.build.os === "windows", diff --git a/ext/http/00_serve.js b/ext/http/00_serve.js index e74e1e71f93d83..2e0c62fefa940a 100644 --- a/ext/http/00_serve.js +++ b/ext/http/00_serve.js @@ -38,7 +38,6 @@ import { listen, listenOptionApiName, TcpConn } from "ext:deno_net/01_net.js"; import { listenTls } from "ext:deno_net/02_tls.js"; const { ArrayPrototypePush, - Error, ObjectHasOwn, ObjectPrototypeIsPrototypeOf, PromisePrototypeCatch, @@ -700,11 +699,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) {