tor-browser

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

try.js (1678B)


      1 // |reftest| skip-if(!xulRuntime.shell)
      2 {
      3  // Check the value of `this` in the callback is undefined.
      4  let this_ = {};
      5  Promise.try(function () {
      6    "use strict";
      7    this_ = this;
      8  });
      9  drainJobQueue();
     10  assertEq(this_, undefined);
     11 }
     12 
     13 {
     14  // Error when the `resolve` function passed by a custom promise subclass throws.
     15  let resolveCalled = false;
     16  let rejectCalled = false;
     17  let expectedError = new Error("foo");
     18 
     19  class CustomPromise {
     20    constructor(executor) {
     21      let resolve = () => {
     22        resolveCalled = true;
     23        throw expectedError;
     24      };
     25      let reject = () => rejectCalled = true;
     26      executor(resolve, reject);
     27    }
     28  }
     29 
     30  let errorThrown = undefined;
     31  try {
     32    Promise.try.call(CustomPromise, function () {});
     33  } catch (e) {
     34    errorThrown = e;
     35  }
     36  drainJobQueue();
     37 
     38  assertEq(resolveCalled, true);
     39  assertEq(rejectCalled, false);
     40  assertEq(errorThrown, expectedError);
     41 }
     42 
     43 {
     44  // Error when the `reject` function passed by a custom promise subclass throws.
     45  let resolveCalled = false;
     46  let rejectCalled = false;
     47  let expectedError = new Error("foo");
     48 
     49  class CustomPromise {
     50    constructor(executor) {
     51      let resolve = () => {
     52        resolveCalled = true;
     53      };
     54      let reject = () => {
     55        rejectCalled = true;
     56        throw expectedError;
     57      };
     58      executor(resolve, reject);
     59    }
     60  }
     61 
     62  let errorThrown = undefined;
     63  try {
     64    Promise.try.call(CustomPromise, function () { throw new Error("bar") });
     65  } catch (e) {
     66    errorThrown = e;
     67  }
     68  drainJobQueue();
     69 
     70  assertEq(resolveCalled, false);
     71  assertEq(rejectCalled, true);
     72  assertEq(errorThrown, expectedError);
     73 }
     74 
     75 reportCompare(true, true);