diff --git a/test/parallel/test-inspector-async-hook-setup-at-signal.js b/test/parallel/test-inspector-async-hook-setup-at-signal.js index 64a3835e415..88d8dfb26a5 100644 --- a/test/parallel/test-inspector-async-hook-setup-at-signal.js +++ b/test/parallel/test-inspector-async-hook-setup-at-signal.js @@ -33,7 +33,6 @@ function waitUntilDebugged() { // This function is called by the inspector client (session) function setupTimeoutWithBreak() { - clearInterval(waiting); process._rawDebug('Debugger ready, setting up timeout with a break'); setTimeout(() => { debugger; }, 50); } @@ -46,16 +45,20 @@ async function waitForInitialSetup(session) { async function setupTimeoutForStackTrace(session) { console.error('[test]', 'Setting up timeout for async stack trace'); + // Async hook setup is deferred when requested from a V8 interrupt. Let the + // event loop finish that setup before creating the timeout whose stack we test. await session.send([ { 'method': 'Runtime.evaluate', - 'params': { expression: 'setupTimeoutWithBreak()' } }, + 'params': { + expression: 'clearInterval(waiting); setImmediate(setupTimeoutWithBreak)', + } }, { 'method': 'Debugger.resume' }, ]); } async function checkAsyncStackTrace(session) { console.error('[test]', 'Verify basic properties of asyncStackTrace'); - const paused = await session.waitForBreakOnLine(23, '[eval]'); + const paused = await session.waitForBreakOnLine(22, '[eval]'); assert(paused.params.asyncStackTrace, `${Object.keys(paused.params)} contains "asyncStackTrace" property`); assert(paused.params.asyncStackTrace.description, 'Timeout');