1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const { AsyncLocalStorage } = require('async_hooks'); 5const http = require('http'); 6 7const asyncLocalStorage = new AsyncLocalStorage(); 8 9const agent = new http.Agent({ 10 maxSockets: 1 11}); 12 13const N = 3; 14let responses = 0; 15 16const server = http.createServer(common.mustCall((req, res) => { 17 res.end('ok'); 18}, N)); 19 20server.listen(0, common.mustCall(() => { 21 const port = server.address().port; 22 23 for (let i = 0; i < N; i++) { 24 asyncLocalStorage.run(i, () => { 25 http.get({ agent, port }, common.mustCall((res) => { 26 assert.strictEqual(asyncLocalStorage.getStore(), i); 27 if (++responses === N) { 28 server.close(); 29 agent.destroy(); 30 } 31 res.resume(); 32 })); 33 }); 34 } 35})); 36