// Copyright 2020 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. // Flags: --always-opt --ignore-unhandled-promises var __caught = 0; (function main() { function foo(f) { const pr = new Promise(function executor() { f(function resolvefun() { try { throw 42; } catch (e) { __caught++; } }, function rejectfun() {}); }); pr.__proto__ = foo.prototype; return pr; } foo.__proto__ = Promise; foo.prototype.then = function thenfun() {}; new foo(); foo.prototype = undefined; foo.all([foo.resolve()]); })(); assertEquals(2, __caught);