• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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