diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js index 80c64c7ba3048b..0a3bcaf2e0cbbd 100644 --- a/lib/internal/http2/core.js +++ b/lib/internal/http2/core.js @@ -1129,6 +1129,11 @@ class Http2Session extends EventEmitter { // Destroy any pending and open streams const cancel = new errors.Error('ERR_HTTP2_STREAM_CANCEL'); + if (error) { + cancel.cause = error; + if (typeof error.message === 'string') + cancel.message += ` (caused by: ${error.message})`; + } state.pendingStreams.forEach((stream) => stream.destroy(cancel)); state.streams.forEach((stream) => stream.destroy(error)); diff --git a/test/parallel/test-http2-client-onconnect-errors.js b/test/parallel/test-http2-client-onconnect-errors.js index 44fe6875602187..af67a0d0ae27db 100644 --- a/test/parallel/test-http2-client-onconnect-errors.js +++ b/test/parallel/test-http2-client-onconnect-errors.js @@ -88,9 +88,14 @@ function runTest(test) { req.on('error', errorMustCall); } else { client.on('error', errorMustCall); - req.on('error', common.expectsError({ - code: 'ERR_HTTP2_STREAM_CANCEL' - })); + req.on('error', (err) => { + common.expectsError({ + code: 'ERR_HTTP2_STREAM_CANCEL' + })(err); + common.expectsError({ + code: 'ERR_HTTP2_ERROR' + })(err.cause); + }); } req.on('end', common.mustCall());