Avoid promise wrapping for middleware next request handlers and add documentation for consuming response from next request handler #294
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.
This PR avoids wrapping the return value from the next request handler in another promise. The request handler will either return a promise or a value that can be consumed directly. When running example 99 with included benchmarking instructions, this simple change improves performance from ~2600 req/s to ~2700 req/s on my local machine. Also, running the (very synthetic)
tests/benchmark-middleware-runner.phpimproved from ~2s to ~1.7s on my local machine.There's potential for a BC break here, but given the lack of documentation for the old behavior and its surprising semantics (see #287), I do not consider this to be a BC break. Instead, this PR now adds documentation for consuming the response from the next middleware request handler function to avoid any future BC breaks.
Builds on top of #293
Supersedes / closes #287