| 'use strict'; |
| require('../common'); |
| const assert = require('assert'); |
| const { AsyncLocalStorage } = require('async_hooks'); |
| |
| async function foo() {} |
| |
| const asyncLocalStorage = new AsyncLocalStorage(); |
| |
| async function testOut() { |
| await foo(); |
| assert.strictEqual(asyncLocalStorage.getStore(), undefined); |
| } |
| |
| async function testAwait() { |
| await foo(); |
| assert.notStrictEqual(asyncLocalStorage.getStore(), undefined); |
| assert.strictEqual(asyncLocalStorage.getStore().get('key'), 'value'); |
| await asyncLocalStorage.exit(testOut); |
| } |
| |
| asyncLocalStorage.run(new Map(), () => { |
| const store = asyncLocalStorage.getStore(); |
| store.set('key', 'value'); |
| testAwait(); // should not reject |
| }); |
| assert.strictEqual(asyncLocalStorage.getStore(), undefined); |