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