Comments (4)
@lmammino 🤔 🤝
from middy.
Thanks @vladgolubev, that's probably a good idea. I think we have to make this middleware slightly smarter to handle this case (and more).
The original idea of having it in the after
phase was to make sure that the user does not override it by mistake, but we didn't think it might have affected error cases.
One idea could be to set the callbackWaitsForEmptyEventLoop
to false in both phases (before
and after
) and probably we should do it also in the onError
phase.
Also, we could assume the before
phase is mandatory and the after
and onError
phases could be switched off through config.
Using these ideas, this can be a first draft of the new version:
module.exports = (opts) => {
const defaults = {
runOnAfter: true,
runOnError: true
}
const options = Object.assign({}, defaults, opts)
const setFlag = (handler, next) => {
handler.context.callbackWaitsForEmptyEventLoop = false
next()
}
return ({
before: setFlag,
after: options.runOnAfter ? setFlag : undefined,
onError: options.runOnError ? setFlag : undefined
})
}
@dkatavic, what do you think?
from middy.
That makes totally sense @dkatavic. Thanks!
Probably we should also set more efficient defaults like:
const defaults = {
runOnBefore: true,
runOnAfter: false, // user code (or other middlewares) might reset the flag, but no extra function is executed
runOnError: false // user code (or other middlewares) might reset the flag, but no extra function is executed
}
@vladgolubev, do you want to take care of submitting a PR with this? 😉
from middy.
Good catch @vladgolubev . I like the draft @lmammino , just I would like to make the middleware as configurable as possible, so can we add runOnBefore
option too?
from middy.
Related Issues (20)
- Please give more descriptive error when throwing "Failed to resolve internal values" in secrets-manager module HOT 2
- middy/http-cors disable defaults and don't add headers HOT 1
- Streamified response with empty body ignores other response attributes HOT 3
- `http-error-handler` to support Problem Details (RFC 9457) HOT 1
- http-error-handler : set custom test to return error instead of `statusCode` HOT 2
- http-error-handler: guidance/bug on using lambda-authorizer with v5 HOT 1
- error-logger: Call implementation function with await prefix HOT 1
- ApproximateReceiveCount limit on SqsPartialBatch HOT 5
- Conditional middleware HOT 3
- (Aware of other issues) No "exports" main defined in /var/task/node_modules/@middy/core/package.json HOT 7
- input-output-logger: replacer function is not called HOT 3
- Error: No "exports" main defined in /path/to/the/repo/node_modules/@middy/core/package.json HOT 1
- @middy/http-content-encoding not awaiting onError HOT 1
- Consistent multipart body parser response format HOT 1
- ✖ No "exports" main defined in ***i/node_modules/@middy/core/package.json
- `ws-response`: Invalid URL format gave to `ApiGatewayManagementApiClient` HOT 4
- `ws-response`: Invalid `request.response` given to API Gateway HOT 1
- Latest version of @middy/core breaks types in the handler function HOT 9
- TypeScript unable to infer types HOT 4
- TypeScript unable to infer types HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from middy.