const promiseAny = (promises) => { console.log(promises) return new Promise(function(resolve,reject){ const result = [] let count = 0 return promises.forEach(p => { p.then((value)=>{ return resolve(value) }).catch((error)=>{ result[count] = error count = count + 1; if(count === promises.length){ return reject(result); } }) }) }) } const time = (time) => new Promise(function(resolve,reject){ return setTimeout(()=>{reject(time)},time) }) promiseAny([time(100),time(200),time(300)]) .then(results => console.log("r",results)) .catch(console.error)