2 var $ = require('../internals/export');
3 var aFunction = require('../internals/a-function');
4 var getBuiltIn = require('../internals/get-built-in');
5 var newPromiseCapabilityModule = require('../internals/new-promise-capability');
6 var perform = require('../internals/perform');
7 var iterate = require('../internals/iterate');
9 var PROMISE_ANY_ERROR = 'No one promise resolved';
11 // `Promise.any` method
12 // https://github.com/tc39/proposal-promise-any
13 $({ target: 'Promise', stat: true }, {
14 any: function any(iterable) {
16 var capability = newPromiseCapabilityModule.f(C);
17 var resolve = capability.resolve;
18 var reject = capability.reject;
19 var result = perform(function () {
20 var promiseResolve = aFunction(C.resolve);
24 var alreadyResolved = false;
25 iterate(iterable, function (promise) {
26 var index = counter++;
27 var alreadyRejected = false;
28 errors.push(undefined);
30 promiseResolve.call(C, promise).then(function (value) {
31 if (alreadyRejected || alreadyResolved) return;
32 alreadyResolved = true;
35 if (alreadyRejected || alreadyResolved) return;
36 alreadyRejected = true;
38 --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
41 --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
43 if (result.error) reject(result.value);
44 return capability.promise;