diff --git a/lib/dispatcher/client-h2.js b/lib/dispatcher/client-h2.js index d34c7cab989..14e51db9949 100644 --- a/lib/dispatcher/client-h2.js +++ b/lib/dispatcher/client-h2.js @@ -208,6 +208,7 @@ function onHttp2SessionGoAway (errorCode) { assert(client[kRunning] === 0) client.emit('disconnect', client[kUrl], [client], err) + client.emit('connectionError', client[kUrl], [client], err) client[kResume]() } diff --git a/test/http2.js b/test/http2.js index 0b98ecd9870..fb16e2d4a15 100644 --- a/test/http2.js +++ b/test/http2.js @@ -1492,7 +1492,7 @@ test('#3046 - GOAWAY Frame', async t => { allowH2: true }) - t = tspl(t, { plan: 7 }) + t = tspl(t, { plan: 10 }) after(() => client.close()) after(() => server.close()) @@ -1502,6 +1502,12 @@ test('#3046 - GOAWAY Frame', async t => { t.strictEqual(err.message, 'HTTP/2: "GOAWAY" frame received with code 0') }) + client.on('connectionError', (url, disconnectClient, err) => { + t.ok(url instanceof URL) + t.deepStrictEqual(disconnectClient, [client]) + t.strictEqual(err.message, 'HTTP/2: "GOAWAY" frame received with code 0') + }) + const response = await client.request({ path: '/', method: 'GET',