Frame-callee-03.js (871B)
1 // Frame.prototype.callee for an async function frame. 2 3 load(libdir + "asserts.js"); 4 5 var g = newGlobal({ newCompartment: true }); 6 var dbg = new Debugger(g); 7 g.eval(` 8 async function f() { await Promise.resolve(); } 9 `); 10 11 const fObj = dbg.makeGlobalObjectReference(g).makeDebuggeeValue(g.f); 12 let frame; 13 let callee; 14 dbg.onEnterFrame = function(f) { 15 frame = f; 16 callee = frame.callee; 17 }; 18 19 const promise = g.f(); 20 21 assertEq(frame instanceof Debugger.Frame, true); 22 assertEq(callee instanceof Debugger.Object, true); 23 assertEq(callee, fObj); 24 assertEq(frame.callee, callee); 25 26 const lastFrame = frame; 27 const lastCallee = callee; 28 frame = null; 29 callee = null; 30 31 promise.then(() => { 32 assertEq(frame, lastFrame); 33 assertEq(callee, lastCallee); 34 35 // The frame has finished evaluating, so the callee is no longer accessible. 36 assertThrowsInstanceOf(() => frame.callee, Error); 37 });