tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Object-getPromiseReactions-03.js (1387B)


      1 // Debugger.Object.prototype.getPromiseReactions reports reaction records
      2 // created with `then` and `catch`.
      3 
      4 load(libdir + 'match.js');
      5 load(libdir + 'match-debugger.js');
      6 
      7 const { Pattern } = Match;
      8 const { OBJECT_WITH_EXACTLY: EXACT } = Pattern;
      9 function EQ(v) {
     10  return new DebuggerIdentical(v);
     11 }
     12 
     13 var g = newGlobal({ newCompartment: true });
     14 var dbg = new Debugger;
     15 var DOg = dbg.addDebuggee(g);
     16 
     17 g.eval(`
     18    function identity(v) { return v; }
     19    function thrower(e) { throw e; }
     20    function fib(n) { if (n <= 1) return 1; else return fib(n-1) + fib(n-2); }
     21    function triangle(n) { return (n+1) * n / 2; }
     22 
     23    var pResolve, pReject;
     24    var p = new Promise((resolve, reject) => { pResolve = resolve; pReject = reject });
     25    var p2 = p.then(identity, thrower);
     26    var p3 = p.then(fib);
     27    var p4 = p.catch(triangle);
     28 `);
     29 
     30 var [DOidentity, DOthrower, DOfib, DOtriangle, DOp, DOp2, DOp3, DOp4] =
     31    [g.identity, g.thrower, g.fib, g.triangle, g.p, g.p2, g.p3, g.p4].map(p => DOg.makeDebuggeeValue(p));
     32 
     33 Match.Pattern([
     34  EXACT({ resolve: EQ(DOidentity), reject: EQ(DOthrower), result: EQ(DOp2) }),
     35  EXACT({ resolve: EQ(DOfib), result: EQ(DOp3) }),
     36  EXACT({ reject: EQ(DOtriangle), result: EQ(DOp4) })
     37 ]).assert(DOp.getPromiseReactions(),
     38          "promiseReactions doesn't return expected reaction list");
     39 
     40 g.pResolve(3);
     41 assertEq(DOp.getPromiseReactions().length, 0);