'use strict'; const common = require('../common'); const net = require('net'); const http = require('http'); class Agent extends http.Agent { createConnection() { const socket = new net.Socket(); socket.on('error', function() { socket.push('HTTP/1.1 200\r\n\r\n'); }); let onNewListener; socket.on('newListener', onNewListener = (name) => { if (name !== 'error') return; socket.removeListener('newListener', onNewListener); // Let other listeners to be set up too process.nextTick(() => { this.breakSocket(socket); }); }); return socket; } breakSocket(socket) { socket.emit('error', new Error('Intentional error')); } } const agent = new Agent(); http.request({ agent }).once('error', function() { console.log('ignore'); this.on('data', common.mustNotCall()); });