%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const { AsyncLocalStorage } = require('async_hooks'); const dc = require('diagnostics_channel'); const assert = require('assert'); const http = require('http'); const als = new AsyncLocalStorage(); let context; // Bind requests to an AsyncLocalStorage context dc.subscribe('http.server.request.start', common.mustCall((message) => { als.enterWith(message); context = message; })); // When the request ends, verify the context has been maintained // and that the messages contain the expected data dc.subscribe('http.server.response.finish', common.mustCall((message) => { const data = { request, response, server, socket: request.socket }; // Context is maintained compare(als.getStore(), context); compare(context, data); compare(message, data); })); let request; let response; const server = http.createServer(common.mustCall((req, res) => { request = req; response = res; setTimeout(() => { res.end('done'); }, 1); })); server.listen(() => { const { port } = server.address(); http.get(`http://localhost:${port}`, (res) => { res.resume(); res.on('end', () => { server.close(); }); }); }); function compare(a, b) { assert.strictEqual(a.request, b.request); assert.strictEqual(a.response, b.response); assert.strictEqual(a.socket, b.socket); assert.strictEqual(a.server, b.server); }