Skip to content

Commit bf72bdd

Browse files
committed
feat(experiment): deno:request event in node:http
1 parent 4772778 commit bf72bdd

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

ext/node/polyfills/http.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2009,6 +2009,12 @@ function _addAbortSignalOption(server: ServerImpl, options: ListenOptions) {
20092009
}
20102010
}
20112011

2012+
export class DenoRequestEvent {
2013+
pendingResponse?: Promise<Response> | Response;
2014+
2015+
constructor(public req: Request) {}
2016+
}
2017+
20122018
export class ServerImpl extends EventEmitter {
20132019
#addr: Deno.NetAddr | null = null;
20142020
#hasClosed = false;
@@ -2077,6 +2083,12 @@ export class ServerImpl extends EventEmitter {
20772083
_serve() {
20782084
const ac = new AbortController();
20792085
const handler = (request: Request, info: Deno.ServeHandlerInfo) => {
2086+
const denoEv = new DenoRequestEvent(request);
2087+
this.emit("deno:request", denoEv);
2088+
if (denoEv.pendingResponse) {
2089+
return denoEv.pendingResponse;
2090+
}
2091+
20802092
const socket = new FakeSocket({
20812093
remoteAddress: info.remoteAddr.hostname,
20822094
remotePort: info.remoteAddr.port,

0 commit comments

Comments
 (0)