| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const { AsyncLocalStorage } = require('async_hooks'); |
| |
| // This is an asynclocalstorage variant of test-timers-clearImmediate.js |
| const asyncLocalStorage = new AsyncLocalStorage(); |
| const N = 3; |
| |
| function next() { |
| const fn = common.mustCall(onImmediate); |
| asyncLocalStorage.run(new Map(), common.mustCall(() => { |
| const immediate = setImmediate(fn); |
| const store = asyncLocalStorage.getStore(); |
| store.set('immediate', immediate); |
| })); |
| } |
| |
| function onImmediate() { |
| const store = asyncLocalStorage.getStore(); |
| const immediate = store.get('immediate'); |
| assert.strictEqual(immediate.constructor.name, 'Immediate'); |
| clearImmediate(immediate); |
| } |
| |
| for (let i = 0; i < N; i++) { |
| next(); |
| } |