// Copyright 2022 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. let {session, contextGroup, Protocol} = InspectorTest.start( 'Ensure that catch prediction is correct for [[Reject]] handlers.'); contextGroup.addScript(`function throwInPromiseCaughtAndRethrown() { var reject; var promise = new Promise(function(res, rej) { reject = rej; }).catch( function rejectHandler(e) { throw e; } ); reject(new Error()); return promise; }`); Protocol.Debugger.onPaused(({params: {callFrames, data}}) => { InspectorTest.log(`${data.uncaught ? 'Uncaught' : 'Caught'} exception in ${ callFrames[0].functionName}`); Protocol.Debugger.resume(); }); InspectorTest.runAsyncTestSuite([async function test() { await Promise.all([ Protocol.Runtime.enable(), Protocol.Debugger.enable(), Protocol.Debugger.setPauseOnExceptions({state: 'uncaught'}), ]); await Protocol.Runtime.evaluate({ awaitPromise: true, expression: 'throwInPromiseCaughtAndRethrown()', }); await Promise.all([ Protocol.Runtime.disable(), Protocol.Debugger.disable(), ]); }]);