'use strict'; const common = require('../common'); const { AsyncLocalStorage } = require('async_hooks'); const als = new AsyncLocalStorage(); function getStore() { return als.getStore(); } common.skipIfInspectorDisabled(); const assert = require('assert'); const { Session } = require('inspector'); const path = require('path'); const { pathToFileURL } = require('url'); let valueInFunction = 0; let valueInBreakpoint = 0; function debugged() { valueInFunction = getStore(); return 42; } async function test() { const session = new Session(); session.connect(); session.post('Debugger.enable'); session.on('Debugger.paused', () => { valueInBreakpoint = getStore(); }); await new Promise((resolve, reject) => { session.post('Debugger.setBreakpointByUrl', { 'lineNumber': 22, 'url': pathToFileURL(path.resolve(__dirname, __filename)).toString(), 'columnNumber': 0, 'condition': '' }, (error, result) => { return error ? reject(error) : resolve(result); }); }); als.run(1, debugged); assert.strictEqual(valueInFunction, valueInBreakpoint); assert.strictEqual(valueInFunction, 1); session.disconnect(); } const interval = setInterval(() => {}, 1000); test().then(common.mustCall(() => { clearInterval(interval); }));