clue · GitHub

This PR fixes concurrently calling the next middleware request handler multiple times. Admittedly, while allowed, this is a rather uncommon situation.

Also, while I'm at it, this PR also avoids wrapping the return value from the 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 ~2500 req/s to ~2600 req/s on my local machine. Also, running the (very synthetic) tests/benchmark-middleware-runner.php improved from ~12s to ~2s on my local machine.

Promise cancellation for pending middleware handlers was previously untested, but I did not encounter any issues here. I've added related tests to achieve 100% test coverage for this class.

Builds on top of #292

Read the original on github.com ↗