2 var $ = require('../internals/export');
3 var aCallable = require('../internals/a-callable');
4 var getBuiltIn = require('../internals/get-built-in');
5 var call = require('../internals/function-call');
6 var newPromiseCapabilityModule = require('../internals/new-promise-capability');
7 var perform = require('../internals/perform');
8 var iterate = require('../internals/iterate');
10 var PROMISE_ANY_ERROR = 'No one promise resolved';
12 // `Promise.any` method
13 // https://tc39.es/ecma262/#sec-promise.any
14 $({ target: 'Promise', stat: true }, {
15 any: function any(iterable) {
17 var AggregateError = getBuiltIn('AggregateError');
18 var capability = newPromiseCapabilityModule.f(C);
19 var resolve = capability.resolve;
20 var reject = capability.reject;
21 var result = perform(function () {
22 var promiseResolve = aCallable(C.resolve);
26 var alreadyResolved = false;
27 iterate(iterable, function (promise) {
28 var index = counter++;
29 var alreadyRejected = false;
31 call(promiseResolve, C, promise).then(function (value) {
32 if (alreadyRejected || alreadyResolved) return;
33 alreadyResolved = true;
36 if (alreadyRejected || alreadyResolved) return;
37 alreadyRejected = true;
38 errors[index] = error;
39 --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
42 --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
44 if (result.error) reject(result.value);
45 return capability.promise;