{
const brokenPromise = new Promise(() => {});
Object.defineProperty(brokenPromise, "constructor" , {
get() { throw "broken constructor" ; }
});
async function * gen() {
try {
await brokenPromise;
} catch (e) {
yield "caught:" + e;
}
}
let fulfilledValue = undefined;
const g = gen();
g.next().then(v => {
fulfilledValue = v.value;
});
drainJobQueue();
assertEq(fulfilledValue, "caught:broken constructor" );
}
{
async function * gen() {
await undefined;
yield 1 ;
}
const g = gen();
g.next();
const bp = Promise.resolve();
Object.defineProperty(bp, "constructor" , {
get() { throw "broken constructor" ; }
});
let rejectedReason = undefined;
g.return (bp).catch (e => {
rejectedReason = e;
});
drainJobQueue();
assertEq(rejectedReason, "broken constructor" );
}
{
async function * gen() {
await undefined;
try {
yield 1 ;
} catch (e) {
yield "caught:" + e;
}
}
const g = gen();
g.next();
const bp = Promise.resolve();
Object.defineProperty(bp, "constructor" , {
get() { throw "broken constructor" ; }
});
let fulfilledValue = undefined;
g.return (bp).then(v => {
fulfilledValue = v.value;
});
drainJobQueue();
assertEq(fulfilledValue, "caught:broken constructor" );
}
if (typeof reportCompare === "function" )
reportCompare(0 , 0 );
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-08-24)
¤
*© Formatika GbR, Deutschland