1'use strict'; 2const common = require('../common'); 3const net = require('net'); 4const http = require('http'); 5 6class Agent extends http.Agent { 7 createConnection() { 8 const socket = new net.Socket(); 9 10 socket.on('error', function() { 11 socket.push('HTTP/1.1 200\r\n\r\n'); 12 }); 13 14 let onNewListener; 15 socket.on('newListener', onNewListener = (name) => { 16 if (name !== 'error') 17 return; 18 socket.removeListener('newListener', onNewListener); 19 20 // Let other listeners to be set up too 21 process.nextTick(() => { 22 this.breakSocket(socket); 23 }); 24 }); 25 26 return socket; 27 } 28 29 breakSocket(socket) { 30 socket.emit('error', new Error('Intentional error')); 31 } 32} 33 34const agent = new Agent(); 35 36http.request({ 37 agent 38}).once('error', function() { 39 console.log('ignore'); 40 this.on('data', common.mustNotCall()); 41}); 42