tor-browser

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

promise-rejection-tracking-optimized.js (841B)


      1 // |reftest| skip-if(!xulRuntime.shell) -- needs setPromiseRejectionTrackerCallback
      2 
      3 const UNHANDLED = 0;
      4 const HANDLED   = 1;
      5 
      6 let rejections = new Map();
      7 function rejectionTracker(promise, state) {
      8  rejections.set(promise, state);
      9 }
     10 setPromiseRejectionTrackerCallback(rejectionTracker);
     11 
     12 // If the return value of then is not used, the promise object is optimized
     13 // away, but if a rejection happens, the rejection should be notified.
     14 Promise.resolve().then(() => { throw 1; });
     15 drainJobQueue();
     16 
     17 assertEq(rejections.size, 1);
     18 
     19 let [[promise, state]] = rejections;
     20 assertEq(state, UNHANDLED);
     21 
     22 let exc;
     23 promise.catch(x => { exc = x; });
     24 drainJobQueue();
     25 
     26 // we handled it after all
     27 assertEq(rejections.get(promise), HANDLED);
     28 
     29 // the right exception was reported
     30 assertEq(exc, 1);
     31 
     32 if (this.reportCompare) {
     33  reportCompare(true,true);
     34 }