11cb0ef41Sopenharmony_ci'use strict';
21cb0ef41Sopenharmony_cirequire('../common');
31cb0ef41Sopenharmony_ciconst assert = require('assert');
41cb0ef41Sopenharmony_ciconst { AsyncLocalStorage } = require('async_hooks');
51cb0ef41Sopenharmony_ci
61cb0ef41Sopenharmony_ciconst asyncLocalStorage = new AsyncLocalStorage();
71cb0ef41Sopenharmony_ci
81cb0ef41Sopenharmony_ciasyncLocalStorage.run(new Map(), () => {
91cb0ef41Sopenharmony_ci  asyncLocalStorage.getStore().set('foo', 'bar');
101cb0ef41Sopenharmony_ci  process.nextTick(() => {
111cb0ef41Sopenharmony_ci    assert.strictEqual(asyncLocalStorage.getStore().get('foo'), 'bar');
121cb0ef41Sopenharmony_ci    process.nextTick(() => {
131cb0ef41Sopenharmony_ci      assert.strictEqual(asyncLocalStorage.getStore(), undefined);
141cb0ef41Sopenharmony_ci    });
151cb0ef41Sopenharmony_ci
161cb0ef41Sopenharmony_ci    asyncLocalStorage.disable();
171cb0ef41Sopenharmony_ci    assert.strictEqual(asyncLocalStorage.getStore(), undefined);
181cb0ef41Sopenharmony_ci
191cb0ef41Sopenharmony_ci    // Calls to exit() should not mess with enabled status
201cb0ef41Sopenharmony_ci    asyncLocalStorage.exit(() => {
211cb0ef41Sopenharmony_ci      assert.strictEqual(asyncLocalStorage.getStore(), undefined);
221cb0ef41Sopenharmony_ci    });
231cb0ef41Sopenharmony_ci    assert.strictEqual(asyncLocalStorage.getStore(), undefined);
241cb0ef41Sopenharmony_ci
251cb0ef41Sopenharmony_ci    process.nextTick(() => {
261cb0ef41Sopenharmony_ci      assert.strictEqual(asyncLocalStorage.getStore(), undefined);
271cb0ef41Sopenharmony_ci      asyncLocalStorage.run(new Map().set('bar', 'foo'), () => {
281cb0ef41Sopenharmony_ci        assert.strictEqual(asyncLocalStorage.getStore().get('bar'), 'foo');
291cb0ef41Sopenharmony_ci      });
301cb0ef41Sopenharmony_ci    });
311cb0ef41Sopenharmony_ci  });
321cb0ef41Sopenharmony_ci});
33