diff --git a/.changeset/lucky-ravens-teach.md b/.changeset/lucky-ravens-teach.md new file mode 100644 index 000000000..f541f11a5 --- /dev/null +++ b/.changeset/lucky-ravens-teach.md @@ -0,0 +1,5 @@ +--- +"open-next": patch +--- + +fix lambda streaming hanging after return diff --git a/packages/open-next/src/types/aws-lambda.ts b/packages/open-next/src/types/aws-lambda.ts index 22d720587..1516f2ae0 100644 --- a/packages/open-next/src/types/aws-lambda.ts +++ b/packages/open-next/src/types/aws-lambda.ts @@ -9,7 +9,7 @@ export interface ResponseStream extends Writable { type Handler = ( event: APIGatewayProxyEventV2, responseStream: ResponseStream, - context?: Context, + context: Context, ) => Promise; interface Metadata { diff --git a/packages/open-next/src/wrappers/aws-lambda-streaming.ts b/packages/open-next/src/wrappers/aws-lambda-streaming.ts index 33c9adfc3..ba046055d 100644 --- a/packages/open-next/src/wrappers/aws-lambda-streaming.ts +++ b/packages/open-next/src/wrappers/aws-lambda-streaming.ts @@ -23,7 +23,12 @@ function formatWarmerResponse(event: WarmerEvent) { const handler: WrapperHandler = async (handler, converter) => awslambda.streamifyResponse( - async (event: AwsLambdaEvent, responseStream): Promise => { + async ( + event: AwsLambdaEvent, + responseStream, + context, + ): Promise => { + context.callbackWaitsForEmptyEventLoop = false; if ("type" in event) { const result = await formatWarmerResponse(event); responseStream.end(Buffer.from(JSON.stringify(result)), "utf-8");