diff --git a/src/node_http2.cc b/src/node_http2.cc index bb4057c9925676..4209a1e1910d3b 100644 --- a/src/node_http2.cc +++ b/src/node_http2.cc @@ -1124,17 +1124,6 @@ int Http2Session::OnStreamClose(nghttp2_session* handle, if (!stream || stream->is_destroyed()) return 0; - // Don't close synchronously in case there's pending data to be written. This - // may happen when writing trailing headers. - if (code == NGHTTP2_NO_ERROR && nghttp2_session_want_write(handle) && - env->can_call_into_js()) { - env->SetImmediate([handle, id, code, user_data](Environment* env) { - OnStreamClose(handle, id, code, user_data); - }); - - return 0; - } - stream->Close(code); // It is possible for the stream close to occur before the stream is diff --git a/test/parallel/test-http2-trailers-after-session-close.js b/test/parallel/test-http2-trailers-after-session-close.js deleted file mode 100644 index d08f875494139c..00000000000000 --- a/test/parallel/test-http2-trailers-after-session-close.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -const common = require('../common'); -if (!common.hasCrypto) - common.skip('missing crypto'); -const assert = require('assert'); -const http2 = require('http2'); - -const { - HTTP2_HEADER_PATH, - HTTP2_HEADER_STATUS, - HTTP2_HEADER_METHOD, -} = http2.constants; - -const server = http2.createServer(); -server.on('stream', common.mustCall((stream) => { - server.close(); - stream.session.close(); - stream.on('wantTrailers', common.mustCall(() => { - stream.sendTrailers({ xyz: 'abc' }); - })); - - stream.respond({ [HTTP2_HEADER_STATUS]: 200 }, { waitForTrailers: true }); - stream.write('some data'); - stream.end(); -})); - -server.listen(0, common.mustCall(() => { - const port = server.address().port; - const client = http2.connect(`http://localhost:${port}`); - client.socket.on('close', common.mustCall()); - const req = client.request({ - [HTTP2_HEADER_PATH]: '/', - [HTTP2_HEADER_METHOD]: 'POST' - }); - req.end(); - req.on('response', common.mustCall()); - let data = ''; - req.on('data', (chunk) => { - data += chunk; - }); - req.on('end', common.mustCall(() => { - assert.strictEqual(data, 'some data'); - })); - req.on('trailers', common.mustCall((headers) => { - assert.strictEqual(headers.xyz, 'abc'); - })); - req.on('close', common.mustCall()); -}));