Skip to content

Commit 40c820b

Browse files
authored
perf: speed up server close (#881)
* perf: speed up server close Waiting `waitUntil` and closing the server can be done in parallel. * Create afraid-seahorses-argue.md
1 parent e57ef11 commit 40c820b

File tree

2 files changed

+8
-10
lines changed

2 files changed

+8
-10
lines changed

.changeset/afraid-seahorses-argue.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"edge-runtime": patch
3+
---
4+
5+
perf: speed up server close

packages/runtime/src/server/run-server.ts

+3-10
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { EdgeContext } from '@edge-runtime/vm'
33
import listen from 'async-listen'
44
import http from 'http'
55
import type { ListenOptions } from 'net'
6+
import { promisify } from 'util'
67

78
interface ServerOptions<T extends EdgeContext> extends Options<T> {}
89

@@ -33,18 +34,10 @@ export async function runServer<T extends EdgeContext>(
3334
const { handler, waitUntil } = createHandler(options)
3435
const server = http.createServer(handler)
3536
const url = await listen(server, options)
36-
37+
const closeServer = promisify(server.close.bind(server))
3738
return {
3839
url: String(url),
39-
close: async () => {
40-
await waitUntil()
41-
await new Promise<void>((resolve, reject) => {
42-
return server.close((err) => {
43-
if (err) reject(err)
44-
resolve()
45-
})
46-
})
47-
},
40+
close: () => Promise.all([waitUntil(), closeServer()]).then(() => void 0),
4841
waitUntil,
4942
}
5043
}

0 commit comments

Comments
 (0)