Promise.race = function(args) { return new Promise((resolve, reject) => { for (let item of args) { Promise.resolve(item).then(res => { resolve(res); }, error => { reject(error); }); } }); } Promise.race([Promise.resolve(2), Promise.reject(1)]).then(res => { console.log(res); }, error => { console.log(error); });