tor-browser

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

promise-then.js (663B)


      1 load(libdir + "asserts.js");
      2 
      3 ignoreUnhandledRejections();
      4 
      5 const g = newGlobal({sameCompartmentAs: this});
      6 
      7 let resolve, reject;
      8 let promise = new Promise((resolveFn, rejectFn) => {
      9    resolve = resolveFn;
     10    reject = rejectFn;
     11 });
     12 
     13 // Set to a built-in Promise.prototype.then function, but from a different realm.
     14 promise.then = g.Promise.prototype.then;
     15 
     16 // Make SpeciesConstructor throw a TypeError exception.
     17 promise.constructor = {
     18    [Symbol.species]: "not a constructor"
     19 };
     20 
     21 async function f(p) {
     22    await p;
     23 }
     24 
     25 let error;
     26 f(promise).catch(e => { error = e; });
     27 
     28 resolve(promise);
     29 
     30 drainJobQueue();
     31 
     32 assertEq(error.constructor === g.TypeError, true);