@@ -25,6 +25,7 @@ const {
2525 Promise,
2626 PromisePrototypeThen,
2727 PromiseResolve,
28+ PromiseWithResolvers,
2829 ReflectGetOwnPropertyDescriptor,
2930 ReflectOwnKeys,
3031 RegExpPrototypeExec,
@@ -380,6 +381,7 @@ function createRepl(inspector) {
380381 let selectedFrame ;
381382 let exitDebugRepl ;
382383 let contextLineNumber = 2 ;
384+ let initialBreakRender ;
383385
384386 function resetOnStart ( ) {
385387 knownScripts = { } ;
@@ -890,6 +892,17 @@ function createRepl(inspector) {
890892 } ) ;
891893 }
892894
895+ function createInitialBreakRenderPromise ( ) {
896+ if ( ! inspector . options . script ||
897+ process . env . NODE_INSPECT_RESUME_ON_START === '1' ) {
898+ return null ;
899+ }
900+
901+ const { promise, resolve, reject } = PromiseWithResolvers ( ) ;
902+ initialBreakRender = { resolve, reject } ;
903+ return promise ;
904+ }
905+
893906 Debugger . on ( 'paused' , ( { callFrames, reason /* , hitBreakpoints */ } ) => {
894907 if ( process . env . NODE_INSPECT_RESUME_ON_START === '1' &&
895908 reason === 'Break on start' ) {
@@ -910,7 +923,7 @@ function createRepl(inspector) {
910923
911924 const header = `${ breakType } in ${ scriptUrl } :${ lineNumber + 1 } ` ;
912925
913- inspector . suspendReplWhile ( ( ) =>
926+ const pauseRender = inspector . suspendReplWhile ( ( ) =>
914927 PromisePrototypeThen (
915928 SafePromiseAllReturnArrayLike ( [ formatWatchers ( true ) , selectedFrame . list ( contextLineNumber ) ] ) ,
916929 ( { 0 : watcherList , 1 : context } ) => {
@@ -919,6 +932,12 @@ function createRepl(inspector) {
919932 inspect ( context ) ;
920933 print ( `${ header } \n${ breakContext } ` ) ;
921934 } ) ) ;
935+
936+ if ( initialBreakRender ) {
937+ const { resolve, reject } = initialBreakRender ;
938+ initialBreakRender = null ;
939+ PromisePrototypeThen ( pauseRender , resolve , reject ) ;
940+ }
922941 } ) ;
923942
924943 function handleResumed ( ) {
@@ -1186,6 +1205,7 @@ function createRepl(inspector) {
11861205 }
11871206
11881207 async function initAfterStart ( ) {
1208+ const initialBreakRenderPromise = createInitialBreakRenderPromise ( ) ;
11891209 await Runtime . enable ( ) ;
11901210 await Profiler . enable ( ) ;
11911211 await Profiler . setSamplingInterval ( { interval : 100 } ) ;
@@ -1194,7 +1214,8 @@ function createRepl(inspector) {
11941214 await Debugger . setBlackboxPatterns ( { patterns : [ ] } ) ;
11951215 await Debugger . setPauseOnExceptions ( { state : pauseOnExceptionState } ) ;
11961216 await restoreBreakpoints ( ) ;
1197- return Runtime . runIfWaitingForDebugger ( ) ;
1217+ await Runtime . runIfWaitingForDebugger ( ) ;
1218+ await initialBreakRenderPromise ;
11981219 }
11991220
12001221 return async function startRepl ( ) {
0 commit comments