Debugger-onPromiseSettled-06.js (1141B)
1 // Resumption values from onPromiseSettled handlers are disallowed. 2 3 load(libdir + 'asserts.js'); 4 5 var g = newGlobal({newCompartment: true}); 6 var dbg = new Debugger(g); 7 var log; 8 9 dbg.onPromiseSettled = function (g) { log += 's'; return undefined; }; 10 log = ''; 11 g.settlePromiseNow(new g.Promise(function (){})); 12 assertEq(log, 's'); 13 14 dbg.uncaughtExceptionHook = function (ex) { assertEq(/disallowed/.test(ex), true); log += 'u'; } 15 dbg.onPromiseSettled = function (g) { log += 's'; return { return: "snoo" }; }; 16 log = ''; 17 g.settlePromiseNow(new g.Promise(function (){})); 18 assertEq(log, 'su'); 19 20 dbg.onPromiseSettled = function (g) { log += 's'; return { throw: "snoo" }; }; 21 log = ''; 22 g.settlePromiseNow(new g.Promise(function (){})); 23 assertEq(log, 'su'); 24 25 dbg.onPromiseSettled = function (g) { log += 's'; return null; }; 26 log = ''; 27 g.settlePromiseNow(new g.Promise(function (){})); 28 assertEq(log, 'su'); 29 30 dbg.uncaughtExceptionHook = function (ex) { assertEq(/foopy/.test(ex), true); log += 'u'; } 31 dbg.onPromiseSettled = function (g) { log += 's'; throw "foopy"; }; 32 log = ''; 33 g.settlePromiseNow(new g.Promise(function (){})); 34 assertEq(log, 'su');