diff --git a/src/__tests__/middy.js b/src/__tests__/middy.js index 789a8a393..575be341f 100644 --- a/src/__tests__/middy.js +++ b/src/__tests__/middy.js @@ -276,7 +276,7 @@ describe('🛵 Middy test suite', () => { }) }) - test('If theres an error and one error middleware handles the error, the next error middlewares is executed', (endTest) => { + test('If theres is an error and one error middleware handles the error, the next error middlewares should not be executed', (endTest) => { const expectedResponse = { message: 'error handled' } const onErrorMiddleware1 = jest.fn((handler, next) => { @@ -297,7 +297,7 @@ describe('🛵 Middy test suite', () => { handler({}, {}, (err, response) => { expect(err).toBeNull() expect(onErrorMiddleware1).toBeCalled() - expect(onErrorMiddleware2).toBeCalled() + expect(onErrorMiddleware2).not.toHaveBeenCalled() expect(response).toBe(expectedResponse) endTest() diff --git a/src/middy.js b/src/middy.js index 9f452a957..aacb3bc80 100644 --- a/src/middy.js +++ b/src/middy.js @@ -102,8 +102,14 @@ const runErrorMiddlewares = (middlewares, instance, done) => { const nextMiddleware = stack.shift() - if (nextMiddleware) { - const retVal = nextMiddleware(instance, runNext) + if (nextMiddleware && !instance.__handledError) { + const retVal = nextMiddleware(instance, (retCallBackError) => { + if (!retCallBackError) { + done() + } else { + runNext(retCallBackError) + } + }) if (retVal) { if (!isPromise(retVal)) {