1'use strict'; 2 3const common = require('../common'); 4const assert = require('assert'); 5const { request } = require('http'); 6const { Duplex } = require('stream'); 7 8let socket; 9 10function createConnection(...args) { 11 socket = new Duplex({ 12 read() {}, 13 write(chunk, encoding, callback) { 14 if (chunk.toString().includes('\r\n\r\n')) { 15 this.push('HTTP/1.1 100 Continue\r\n\r\n'); 16 } 17 18 callback(); 19 } 20 }); 21 22 return socket; 23} 24 25const req = request('http://localhost:8080', { createConnection }); 26 27req.on('information', common.mustCall(({ statusCode }) => { 28 assert.strictEqual(statusCode, 100); 29 socket.push('HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n'); 30 socket.push(null); 31})); 32 33req.on('response', common.mustCall(({ statusCode }) => { 34 assert.strictEqual(statusCode, 200); 35})); 36 37req.end(); 38