'use strict'; const common = require('../common'); const { setTimeout } = require('node:timers/promises'); const { AsyncLocalStorage } = require('async_hooks'); const dc = require('diagnostics_channel'); const assert = require('assert'); const channel = dc.tracingChannel('test'); const store = new AsyncLocalStorage(); const firstContext = { foo: 'bar' }; const secondContext = { baz: 'buz' }; channel.start.bindStore(store, common.mustCall(() => { return firstContext; })); channel.asyncStart.bindStore(store, common.mustNotCall(() => { return secondContext; })); assert.strictEqual(store.getStore(), undefined); channel.tracePromise(common.mustCall(async () => { assert.deepStrictEqual(store.getStore(), firstContext); await setTimeout(1); // Should _not_ switch to second context as promises don't have an "after" // point at which to do a runStores. assert.deepStrictEqual(store.getStore(), firstContext); })); assert.strictEqual(store.getStore(), undefined);