// Copyright 2018 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. (function() { let resolve; let onFulfilledValue; const p = new Promise(r => resolve = r); resolve(Promise.resolve(1)); p.then( v => { onFulfilledValue = v; }, e => { assertUnreachable(); }); setTimeout(_ => assertEquals(1, onFulfilledValue)); })(); (function() { let resolve; let onRejectedReason; const p = new Promise(r => resolve = r); resolve(Promise.reject(1)); p.then( v => { assertUnreachable(); }, e => { onRejectedReason = e; }); setTimeout(_ => assertEquals(1, onRejectedReason)); })(); (function() { let onFulfilledValue; (async () => Promise.resolve(1))().then( v => { onFulfilledValue = v; }, e => { assertUnreachable(); }); setTimeout(_ => assertEquals(1, onFulfilledValue)); })(); (function() { let onRejectedReason; (async () => Promise.reject(1))().then( v => { assertUnreachable(); }, e => { onRejectedReason = e; }); setTimeout(_ => assertEquals(1, onRejectedReason)); })(); (function() { let resolve; let onFulfilledValue; const p = new Promise(r => resolve = r); resolve({ then(onFulfilled, onRejected) { onFulfilled(1); } }); p.then( v => { onFulfilledValue = v; }, e => { assertUnreachable(); }); setTimeout(_ => assertEquals(1, onFulfilledValue)); })(); (function() { let resolve; let onRejectedReason; const p = new Promise(r => resolve = r); resolve({ then(onFulfilled, onRejected) { onRejected(1); } }); p.then( v => { assertUnreachable(); }, e => { onRejectedReason = e; }); setTimeout(_ => assertEquals(1, onRejectedReason)); })(); (function() { let onFulfilledValue; (async () => ({ then(onFulfilled, onRejected) { onFulfilled(1); } }))().then( v => { onFulfilledValue = v; }, e => { assertUnreachable(); }); setTimeout(_ => assertEquals(1, onFulfilledValue)); })(); (function() { let onRejectedReason; (async () => ({ then(onFulfilled, onRejected) { onRejected(1); } }))().then( v => { assertUnreachable(); }, e => { onRejectedReason = e; }); setTimeout(_ => assertEquals(1, onRejectedReason)); })();