@@ -220,7 +220,7 @@ function optimizerBailout(test, verify) {
220220 d8 . promise . setHooks ( ) ;
221221}
222222
223- if ( has_promise_hooks ) {
223+ function doTest ( ) {
224224 optimizerBailout ( async ( ) => {
225225 await Promise . resolve ( ) ;
226226 } , ( ) => {
@@ -234,6 +234,19 @@ if (has_promise_hooks) {
234234 assertNextEvent ( 'after' , [ 3 ] ) ;
235235 assertEmptyLog ( ) ;
236236 } ) ;
237+ optimizerBailout ( async ( ) => {
238+ await Promise . reject ( ) ;
239+ } , ( ) => {
240+ assertNextEvent ( 'init' , [ 1 ] ) ;
241+ assertNextEvent ( 'init' , [ 2 ] ) ;
242+ assertNextEvent ( 'resolve' , [ 2 ] ) ;
243+ assertNextEvent ( 'init' , [ 3 , 2 ] ) ;
244+ assertNextEvent ( 'before' , [ 3 ] ) ;
245+ assertNextEvent ( 'resolve' , [ 1 ] ) ;
246+ assertNextEvent ( 'resolve' , [ 3 ] ) ;
247+ assertNextEvent ( 'after' , [ 3 ] ) ;
248+ assertEmptyLog ( ) ;
249+ } ) ;
237250 optimizerBailout ( async ( ) => {
238251 await { then ( cb ) { cb ( ) } } ;
239252 } , ( ) => {
@@ -249,6 +262,21 @@ if (has_promise_hooks) {
249262 assertNextEvent ( 'after' , [ 3 ] ) ;
250263 assertEmptyLog ( ) ;
251264 } ) ;
265+ optimizerBailout ( async ( ) => {
266+ await { then ( _ , cb ) { cb ( ) } } ;
267+ } , ( ) => {
268+ assertNextEvent ( 'init' , [ 1 ] ) ;
269+ assertNextEvent ( 'init' , [ 2 , 1 ] ) ;
270+ assertNextEvent ( 'init' , [ 3 , 2 ] ) ;
271+ assertNextEvent ( 'before' , [ 2 ] ) ;
272+ assertNextEvent ( 'resolve' , [ 2 ] ) ;
273+ assertNextEvent ( 'after' , [ 2 ] ) ;
274+ assertNextEvent ( 'before' , [ 3 ] ) ;
275+ assertNextEvent ( 'resolve' , [ 1 ] ) ;
276+ assertNextEvent ( 'resolve' , [ 3 ] ) ;
277+ assertNextEvent ( 'after' , [ 3 ] ) ;
278+ assertEmptyLog ( ) ;
279+ } ) ;
252280 basicTest ( ) ;
253281 exceptions ( ) ;
254282
@@ -292,3 +320,9 @@ if (has_promise_hooks) {
292320 } ) ;
293321
294322}
323+
324+ if ( has_promise_hooks ) {
325+ doTest ( ) ;
326+ d8 . debugger . enable ( ) ;
327+ doTest ( ) ;
328+ }
0 commit comments