tor-browser

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

head.js (1167B)


      1 const SVG_NS = "http://www.w3.org/2000/svg";
      2 const XHTML_NS = "http://www.w3.org/1999/xhtml";
      3 const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
      4 
      5 function trackPromise(promise) {
      6  let isResolved = false;
      7  let isRejected = false;
      8 
      9  const trackedPromise = promise.then(
     10    value => {
     11      isResolved = true;
     12      return value;
     13    },
     14    error => {
     15      isRejected = true;
     16      throw error;
     17    }
     18  );
     19 
     20  trackedPromise.isResolved = () => isResolved;
     21  trackedPromise.isRejected = () => isRejected;
     22  trackedPromise.isPending = () => !isResolved && !isRejected;
     23 
     24  return trackedPromise;
     25 }
     26 
     27 const hasPromiseResolved = async function (promise) {
     28  let resolved = false;
     29  promise.finally(() => (resolved = true)).catch(() => {});
     30  // Make sure microtasks have time to run.
     31  await new Promise(resolve => Services.tm.dispatchToMainThread(resolve));
     32  return resolved;
     33 };
     34 
     35 const hasPromiseRejected = async function (promise) {
     36  let rejected = false;
     37  promise.catch(() => (rejected = true));
     38  // Make sure microtasks have time to run.
     39  await new Promise(resolve => Services.tm.dispatchToMainThread(resolve));
     40  return rejected;
     41 };