- Version: 14.11.0
- Platform:
Linux solus 5.6.19-158.current #1 SMP PREEMPT Sun Jul 26 14:17:01 UTC 2020 x86_64 GNU/Linux
- Subsystem: http2
What steps will reproduce the bug?
const http = require('http2');
const server = http.createServer((request, response) => {
response.write('a');
setTimeout(() => {
// Does the same as response.end()
response.destroy();
}, 100);
});
// HTTP/2
server.listen(() => {
const session = http.connect(`http://localhost:${server.address().port}`);
const stream = session.request();
stream.resume();
stream.end();
stream.once('aborted', () => {
console.log('stream aborted');
});
stream.once('end', () => {
console.log('stream end');
session.close();
server.close();
});
stream.once('error', () => {
console.log('stream error');
});
});
// HTTP/1.1:
// server.listen(() => {
// const request = http.get(`http://localhost:${server.address().port}`, response => {
// console.log('got response');
// response.resume();
// response.once('aborted', () => {
// console.log('aborted');
// server.close();
// });
// response.once('end', () => {
// console.log('response end');
// });
// response.once('close', () => {
// console.log('response close');
// });
// });
// });
Note: it works as expected when the method is e.g. POST and stream.end() is not called.
How often does it reproduce? Is there a required condition?
Always.
What is the expected behavior?
aborted or an error event.
What do you see instead?
end event is emitted.