| 'use strict'; |
| |
| const common = require('../common'); |
| const http = require('http'); |
| |
| const makeRequest = (port, agent) => |
| new Promise((resolve, reject) => { |
| const req = http.get( |
| { path: '/', port, agent }, |
| (res) => { |
| res.resume(); |
| res.on('end', () => resolve()); |
| }, |
| ); |
| req.on('error', (e) => reject(e)); |
| req.end(); |
| }); |
| |
| const server = http.createServer( |
| { keepAliveTimeout: common.platformTimeout(2000), keepAlive: true }, |
| common.mustCall((req, res) => { |
| const body = 'hello world\n'; |
| res.writeHead(200, { 'Content-Length': body.length }); |
| res.write(body); |
| res.end(); |
| }, 2) |
| ); |
| |
| const agent = new http.Agent({ maxSockets: 5, keepAlive: true }); |
| |
| server.listen(0, common.mustCall(async function() { |
| await makeRequest(this.address().port, agent); |
| // Block the event loop for 2 seconds |
| Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2000); |
| await makeRequest(this.address().port, agent); |
| server.close(); |
| agent.destroy(); |
| })); |