diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js index 4622d97614a1bb..aa20192efade14 100644 --- a/lib/internal/http2/compat.js +++ b/lib/internal/http2/compat.js @@ -616,7 +616,7 @@ class Http2ServerResponse extends Stream { if ((state.closed || state.ending) && state.headRequest === stream.headRequest) { - return false; + return this; } if (typeof chunk === 'function') { diff --git a/test/parallel/test-http2-compat-serverresponse-end.js b/test/parallel/test-http2-compat-serverresponse-end.js index 0e846a5948e3cc..b999dadabcedd4 100644 --- a/test/parallel/test-http2-compat-serverresponse-end.js +++ b/test/parallel/test-http2-compat-serverresponse-end.js @@ -60,6 +60,34 @@ const { })); } +{ + // Http2ServerResponse.end should return self after end + const server = createServer(mustCall((request, response) => { + strictEqual(response, response.end()); + strictEqual(response, response.end()); + server.close(); + })); + server.listen(0, mustCall(() => { + const { port } = server.address(); + const url = `http://localhost:${port}`; + const client = connect(url, mustCall(() => { + const headers = { + ':path': '/', + ':method': 'GET', + ':scheme': 'http', + ':authority': `localhost:${port}` + }; + const request = client.request(headers); + request.setEncoding('utf8'); + request.on('end', mustCall(() => { + client.close(); + })); + request.end(); + request.resume(); + })); + })); +} + { // Http2ServerResponse.end can omit encoding arg, sets it to utf-8 const server = createServer(mustCall((request, response) => {