Release Proposal: [email protected]
This is a proposal to prepare and publish a new major release (v3.0.0) of on-finished.
Proposed Changes
- [x] #56
- [x] ~~#54~~ merged into v2
- [x] #81
- [x] Dropping Support for Node.js <18
- [ ] Dropping Support for Non-Stream Objects
- [x] Refactor
isFinishedto use only modern public properties of HttpIncomingMessage and HttpOutgoingMessage - [ ] Support HTTP2
- [ ] #69
- [x] #70
- [x] #72
🚫 Dropping Support for End-of-Life Node.js Versions
I propose updating the engines field to >=18, aligning with Express's current requirement. This would allow us to modernize the codebase by removing workarounds and compatibility layers for older Node.js versions.
As part of this, we would remove legacy runtime compatibility code, including:
- Conditional use of
async_hooksfor environments without stable support - Fallbacks such as
setImmediatetargeting pre-Node.js 10 environments - Special Handling for older Stream implementations
This cleanup simplifies the module, improves maintainability, and ensures consistent behavior across modern Node.js versions.
cc @jonchurch @wesleytodd @UlisesGascon
btw, I’ll also be working on this, since this module is important for enabling HTTP/2 in the modules. @jshttp/express-tc, could you please create a new branch? This new version would be intended for Express v6.
@bjohansebas That sounds great! I agree it's an important step, especially with HTTP/2 support on the roadmap.
I actually think this version could potentially be integrated with Express v5 as well, provided we can structure the changes in a way that’s non-breaking for users. That’s why I suggested aligning the engines field with Express v5 (Node.js >= 18), which would still give us room to modernize the internals while keeping compatibility with current Express consumers.
Happy to collaborate on this!
This proposal backlog is looking very promising! 👍
I created the branch v3 to land all the PRs there until we are ready to do the release
Refactor isFinished to use only modern public properties of HttpIncomingMessage and HttpOutgoingMessage
Which private properties are we using from them? The ones we use are necessary and partially documented.
Do we need a changlog entry for #56? I missed that in the PR, but it is a internal refactoring and the public API and behaviour is not affected.
Hey guys, i think this release is almost ready! I’d appreciate some help setting up the http2 tests so we can move this forward.