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 };