Allow async preHandler hooks on RouteShorthandOptions #5152
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
In response to issue #5086, where I mentioned that the
hookRunner
function can handle asyncpreHandler
hooks, I added types to route.d.ts to allow asyncpreHandler
hooks. This change makes it clear that you want either a callback-based hook that returns void or an async hook that returns a Promise -- using an async hook with a callback is problematic and not handled properly byhookRunner
. This change can probably be applied to the other hooks inRouteShorthandOptions
, but I scoped it just to thepreHandler
hook, which I tested locally. In fact, there are already tests in route.test-d.ts that validate async hooks.Checklist
npm run test
andnpm run benchmark
and the Code of conduct