From a118f2f3480e9481bcaa8aa9cd5861a3f8e56cd7 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Mon, 9 Jun 2025 18:49:28 -0400 Subject: [PATCH 1/3] resolve immediately when handler returns undefined --- src/utils/handler.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/utils/handler.ts b/src/utils/handler.ts index 4874bbf8d..b7224c072 100644 --- a/src/utils/handler.ts +++ b/src/utils/handler.ts @@ -121,6 +121,9 @@ export function promisifiedHandler(handler: Handler Date: Mon, 9 Jun 2025 19:03:57 -0400 Subject: [PATCH 2/3] only resolve immediately if handler doesn't return a callback --- src/utils/handler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/handler.ts b/src/utils/handler.ts index b7224c072..61775f85c 100644 --- a/src/utils/handler.ts +++ b/src/utils/handler.ts @@ -121,8 +121,8 @@ export function promisifiedHandler(handler: Handler Date: Thu, 12 Jun 2025 11:52:49 -0400 Subject: [PATCH 3/3] add unit test --- src/utils/handler.spec.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/utils/handler.spec.ts b/src/utils/handler.spec.ts index 271c85c39..e1100509f 100644 --- a/src/utils/handler.spec.ts +++ b/src/utils/handler.spec.ts @@ -296,4 +296,33 @@ describe("wrap", () => { expect(calledOriginalHandler).toBeFalsy(); }); + + it("completes when handler returns undefined", async () => { + const handler: Handler = (event, context) => { + // No return statement, implicitly returns undefined + }; + + let calledStart = false; + let calledComplete = false; + let calledOriginalHandler = false; + + const wrappedHandler = wrap( + handler, + async () => { + calledStart = true; + }, + async () => { + calledComplete = true; + }, + ); + + const result = await wrappedHandler({}, mockContext, () => { + calledOriginalHandler = true; + }); + + expect(result).toEqual(undefined); + expect(calledStart).toBeTruthy(); + expect(calledComplete).toBeTruthy(); + expect(calledOriginalHandler).toBeFalsy(); + }); });