| 'use strict'; | 
| var $ = require('../internals/export'); | 
| var IS_PURE = require('../internals/is-pure'); | 
| var IS_NODE = require('../internals/environment-is-node'); | 
| var globalThis = require('../internals/global-this'); | 
| var call = require('../internals/function-call'); | 
| var defineBuiltIn = require('../internals/define-built-in'); | 
| var setPrototypeOf = require('../internals/object-set-prototype-of'); | 
| var setToStringTag = require('../internals/set-to-string-tag'); | 
| var setSpecies = require('../internals/set-species'); | 
| var aCallable = require('../internals/a-callable'); | 
| var isCallable = require('../internals/is-callable'); | 
| var isObject = require('../internals/is-object'); | 
| var anInstance = require('../internals/an-instance'); | 
| var speciesConstructor = require('../internals/species-constructor'); | 
| var task = require('../internals/task').set; | 
| var microtask = require('../internals/microtask'); | 
| var hostReportErrors = require('../internals/host-report-errors'); | 
| var perform = require('../internals/perform'); | 
| var Queue = require('../internals/queue'); | 
| var InternalStateModule = require('../internals/internal-state'); | 
| var NativePromiseConstructor = require('../internals/promise-native-constructor'); | 
| var PromiseConstructorDetection = require('../internals/promise-constructor-detection'); | 
| var newPromiseCapabilityModule = require('../internals/new-promise-capability'); | 
|   | 
| var PROMISE = 'Promise'; | 
| var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR; | 
| var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT; | 
| var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING; | 
| var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); | 
| var setInternalState = InternalStateModule.set; | 
| var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; | 
| var PromiseConstructor = NativePromiseConstructor; | 
| var PromisePrototype = NativePromisePrototype; | 
| var TypeError = globalThis.TypeError; | 
| var document = globalThis.document; | 
| var process = globalThis.process; | 
| var newPromiseCapability = newPromiseCapabilityModule.f; | 
| var newGenericPromiseCapability = newPromiseCapability; | 
|   | 
| var DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent); | 
| var UNHANDLED_REJECTION = 'unhandledrejection'; | 
| var REJECTION_HANDLED = 'rejectionhandled'; | 
| var PENDING = 0; | 
| var FULFILLED = 1; | 
| var REJECTED = 2; | 
| var HANDLED = 1; | 
| var UNHANDLED = 2; | 
|   | 
| var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; | 
|   | 
| // helpers | 
| var isThenable = function (it) { | 
|   var then; | 
|   return isObject(it) && isCallable(then = it.then) ? then : false; | 
| }; | 
|   | 
| var callReaction = function (reaction, state) { | 
|   var value = state.value; | 
|   var ok = state.state === FULFILLED; | 
|   var handler = ok ? reaction.ok : reaction.fail; | 
|   var resolve = reaction.resolve; | 
|   var reject = reaction.reject; | 
|   var domain = reaction.domain; | 
|   var result, then, exited; | 
|   try { | 
|     if (handler) { | 
|       if (!ok) { | 
|         if (state.rejection === UNHANDLED) onHandleUnhandled(state); | 
|         state.rejection = HANDLED; | 
|       } | 
|       if (handler === true) result = value; | 
|       else { | 
|         if (domain) domain.enter(); | 
|         result = handler(value); // can throw | 
|         if (domain) { | 
|           domain.exit(); | 
|           exited = true; | 
|         } | 
|       } | 
|       if (result === reaction.promise) { | 
|         reject(new TypeError('Promise-chain cycle')); | 
|       } else if (then = isThenable(result)) { | 
|         call(then, result, resolve, reject); | 
|       } else resolve(result); | 
|     } else reject(value); | 
|   } catch (error) { | 
|     if (domain && !exited) domain.exit(); | 
|     reject(error); | 
|   } | 
| }; | 
|   | 
| var notify = function (state, isReject) { | 
|   if (state.notified) return; | 
|   state.notified = true; | 
|   microtask(function () { | 
|     var reactions = state.reactions; | 
|     var reaction; | 
|     while (reaction = reactions.get()) { | 
|       callReaction(reaction, state); | 
|     } | 
|     state.notified = false; | 
|     if (isReject && !state.rejection) onUnhandled(state); | 
|   }); | 
| }; | 
|   | 
| var dispatchEvent = function (name, promise, reason) { | 
|   var event, handler; | 
|   if (DISPATCH_EVENT) { | 
|     event = document.createEvent('Event'); | 
|     event.promise = promise; | 
|     event.reason = reason; | 
|     event.initEvent(name, false, true); | 
|     globalThis.dispatchEvent(event); | 
|   } else event = { promise: promise, reason: reason }; | 
|   if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event); | 
|   else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); | 
| }; | 
|   | 
| var onUnhandled = function (state) { | 
|   call(task, globalThis, function () { | 
|     var promise = state.facade; | 
|     var value = state.value; | 
|     var IS_UNHANDLED = isUnhandled(state); | 
|     var result; | 
|     if (IS_UNHANDLED) { | 
|       result = perform(function () { | 
|         if (IS_NODE) { | 
|           process.emit('unhandledRejection', value, promise); | 
|         } else dispatchEvent(UNHANDLED_REJECTION, promise, value); | 
|       }); | 
|       // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should | 
|       state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; | 
|       if (result.error) throw result.value; | 
|     } | 
|   }); | 
| }; | 
|   | 
| var isUnhandled = function (state) { | 
|   return state.rejection !== HANDLED && !state.parent; | 
| }; | 
|   | 
| var onHandleUnhandled = function (state) { | 
|   call(task, globalThis, function () { | 
|     var promise = state.facade; | 
|     if (IS_NODE) { | 
|       process.emit('rejectionHandled', promise); | 
|     } else dispatchEvent(REJECTION_HANDLED, promise, state.value); | 
|   }); | 
| }; | 
|   | 
| var bind = function (fn, state, unwrap) { | 
|   return function (value) { | 
|     fn(state, value, unwrap); | 
|   }; | 
| }; | 
|   | 
| var internalReject = function (state, value, unwrap) { | 
|   if (state.done) return; | 
|   state.done = true; | 
|   if (unwrap) state = unwrap; | 
|   state.value = value; | 
|   state.state = REJECTED; | 
|   notify(state, true); | 
| }; | 
|   | 
| var internalResolve = function (state, value, unwrap) { | 
|   if (state.done) return; | 
|   state.done = true; | 
|   if (unwrap) state = unwrap; | 
|   try { | 
|     if (state.facade === value) throw new TypeError("Promise can't be resolved itself"); | 
|     var then = isThenable(value); | 
|     if (then) { | 
|       microtask(function () { | 
|         var wrapper = { done: false }; | 
|         try { | 
|           call(then, value, | 
|             bind(internalResolve, wrapper, state), | 
|             bind(internalReject, wrapper, state) | 
|           ); | 
|         } catch (error) { | 
|           internalReject(wrapper, error, state); | 
|         } | 
|       }); | 
|     } else { | 
|       state.value = value; | 
|       state.state = FULFILLED; | 
|       notify(state, false); | 
|     } | 
|   } catch (error) { | 
|     internalReject({ done: false }, error, state); | 
|   } | 
| }; | 
|   | 
| // constructor polyfill | 
| if (FORCED_PROMISE_CONSTRUCTOR) { | 
|   // 25.4.3.1 Promise(executor) | 
|   PromiseConstructor = function Promise(executor) { | 
|     anInstance(this, PromisePrototype); | 
|     aCallable(executor); | 
|     call(Internal, this); | 
|     var state = getInternalPromiseState(this); | 
|     try { | 
|       executor(bind(internalResolve, state), bind(internalReject, state)); | 
|     } catch (error) { | 
|       internalReject(state, error); | 
|     } | 
|   }; | 
|   | 
|   PromisePrototype = PromiseConstructor.prototype; | 
|   | 
|   // eslint-disable-next-line no-unused-vars -- required for `.length` | 
|   Internal = function Promise(executor) { | 
|     setInternalState(this, { | 
|       type: PROMISE, | 
|       done: false, | 
|       notified: false, | 
|       parent: false, | 
|       reactions: new Queue(), | 
|       rejection: false, | 
|       state: PENDING, | 
|       value: null | 
|     }); | 
|   }; | 
|   | 
|   // `Promise.prototype.then` method | 
|   // https://tc39.es/ecma262/#sec-promise.prototype.then | 
|   Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) { | 
|     var state = getInternalPromiseState(this); | 
|     var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); | 
|     state.parent = true; | 
|     reaction.ok = isCallable(onFulfilled) ? onFulfilled : true; | 
|     reaction.fail = isCallable(onRejected) && onRejected; | 
|     reaction.domain = IS_NODE ? process.domain : undefined; | 
|     if (state.state === PENDING) state.reactions.add(reaction); | 
|     else microtask(function () { | 
|       callReaction(reaction, state); | 
|     }); | 
|     return reaction.promise; | 
|   }); | 
|   | 
|   OwnPromiseCapability = function () { | 
|     var promise = new Internal(); | 
|     var state = getInternalPromiseState(promise); | 
|     this.promise = promise; | 
|     this.resolve = bind(internalResolve, state); | 
|     this.reject = bind(internalReject, state); | 
|   }; | 
|   | 
|   newPromiseCapabilityModule.f = newPromiseCapability = function (C) { | 
|     return C === PromiseConstructor || C === PromiseWrapper | 
|       ? new OwnPromiseCapability(C) | 
|       : newGenericPromiseCapability(C); | 
|   }; | 
|   | 
|   if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) { | 
|     nativeThen = NativePromisePrototype.then; | 
|   | 
|     if (!NATIVE_PROMISE_SUBCLASSING) { | 
|       // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs | 
|       defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) { | 
|         var that = this; | 
|         return new PromiseConstructor(function (resolve, reject) { | 
|           call(nativeThen, that, resolve, reject); | 
|         }).then(onFulfilled, onRejected); | 
|       // https://github.com/zloirock/core-js/issues/640 | 
|       }, { unsafe: true }); | 
|     } | 
|   | 
|     // make `.constructor === Promise` work for native promise-based APIs | 
|     try { | 
|       delete NativePromisePrototype.constructor; | 
|     } catch (error) { /* empty */ } | 
|   | 
|     // make `instanceof Promise` work for native promise-based APIs | 
|     if (setPrototypeOf) { | 
|       setPrototypeOf(NativePromisePrototype, PromisePrototype); | 
|     } | 
|   } | 
| } | 
|   | 
| // `Promise` constructor | 
| // https://tc39.es/ecma262/#sec-promise-executor | 
| $({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { | 
|   Promise: PromiseConstructor | 
| }); | 
|   | 
| setToStringTag(PromiseConstructor, PROMISE, false, true); | 
| setSpecies(PROMISE); |