1'use strict'; 2require('../common'); 3const assert = require('assert'); 4const { AsyncLocalStorage } = require('async_hooks'); 5 6const asyncLocalStorage = new AsyncLocalStorage(); 7const asyncLocalStorage2 = new AsyncLocalStorage(); 8 9setTimeout(() => { 10 asyncLocalStorage.run(new Map(), () => { 11 asyncLocalStorage2.run(new Map(), () => { 12 const store = asyncLocalStorage.getStore(); 13 const store2 = asyncLocalStorage2.getStore(); 14 store.set('hello', 'world'); 15 store2.set('hello', 'foo'); 16 setTimeout(() => { 17 assert.strictEqual(asyncLocalStorage.getStore().get('hello'), 'world'); 18 assert.strictEqual(asyncLocalStorage2.getStore().get('hello'), 'foo'); 19 asyncLocalStorage.exit(() => { 20 assert.strictEqual(asyncLocalStorage.getStore(), undefined); 21 assert.strictEqual(asyncLocalStorage2.getStore().get('hello'), 'foo'); 22 }); 23 assert.strictEqual(asyncLocalStorage.getStore().get('hello'), 'world'); 24 assert.strictEqual(asyncLocalStorage2.getStore().get('hello'), 'foo'); 25 }, 200); 26 }); 27 }); 28}, 100); 29 30setTimeout(() => { 31 asyncLocalStorage.run(new Map(), () => { 32 const store = asyncLocalStorage.getStore(); 33 store.set('hello', 'earth'); 34 setTimeout(() => { 35 assert.strictEqual(asyncLocalStorage.getStore().get('hello'), 'earth'); 36 }, 100); 37 }); 38}, 100); 39