diff --git a/lib/client.js b/lib/client.js index f18065611aa..55d9afabf95 100644 --- a/lib/client.js +++ b/lib/client.js @@ -794,7 +794,7 @@ class Parser { return -1 } - /* istanbul ignore if: this can only happen if server is misbehaving */ + /* this can only happen if server is misbehaving */ if (upgrade && !request.upgrade) { util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))) return -1 diff --git a/test/http-100.js b/test/http-100.js index 67a6dbeb637..38f5c19a2fb 100644 --- a/test/http-100.js +++ b/test/http-100.js @@ -84,6 +84,30 @@ test('error 100 body', (t) => { }) }) +test('error 101 upgrade', (t) => { + t.plan(2) + + const server = net.createServer((socket) => { + socket.write('HTTP/1.1 101 Switching Protocols\r\nUpgrade: example/1\r\nConnection: Upgrade\r\n') + socket.write('\r\n') + }) + t.teardown(server.close.bind(server)) + server.listen(0, () => { + const client = new Client(`http://localhost:${server.address().port}`) + t.teardown(client.destroy.bind(client)) + + client.request({ + path: '/', + method: 'GET' + }, (err) => { + t.equal(err.message, 'bad upgrade') + }) + client.on('disconnect', () => { + t.pass() + }) + }) +}) + test('1xx response without timeouts', { only: true }, t => { t.plan(2)