| //TODO(aghassemi) move to core Veyron API. Rename to Promise.Any |
| exports.resolveRace = resolveRace; |
| * resolveRace returns a promise that resolves when the first promise |
| * resolves and rejects only after every promise has rejected. |
| * @param {promise[]} promises a list of promises. |
| * @return {promse} a promise that resolves when any of the inputs resolve, or |
| * when all of the inputs reject. |
| function resolveRace(promises) { |
| var promise = new Promise(function(pResolve, pReject) { |
| var onReject = function(reason) { |
| if (numRejects === promises.length) { |
| for (var i = 0; i < promises.length; i++) { |
| promises[i].then(resolve, onReject); |