Closed
Description
- Version: 8.13.0
- Platform: Tested on Windows I expect it's platform independent
- Subsystem: http2
With 8.13.0 http2 server stream emits error
after close
whereas 10.13.0 and 11.2.0 emit error
before close
.
I was expecting that 8.13.0 acts like 10.13.0 as http2 is out of experimental now and quite a lot was backported to reach parity.
The sequence is not documented to my understanding but I have the feeling that error
should come first.
In my use case (APM) the consequence is that I can't attach the error
event to the server transaction as this one is already closed.
Reproducer:
const { createServer, connect } = require('http2');
createServer()
.on('stream', (stream) => {
console.log('ServerStream created');
stream
.on('close', () => console.log('ServerStream close'))
.on('error', (err) => console.log('ServerStream error'))
.respondWithFile('dont exist');;
})
.listen(8000);
connect('http://localhost:8000').request()
.on('response', () => console.log('response'))
.on('error', () => console.log('ClientRequest error'));
prints:
for 8.13.0:
ServerStream created
ServerStream close
ServerStream error
ClientRequest error
for 10.13.0/11.2.0:
ServerStream created
ServerStream error
ServerStream close
ClientRequest error
Refs: #22850
Metadata
Metadata
Assignees
Labels
No labels