Promise.race() Polyfill

The Promise.race() method returns a promise that fulfills or rejects as soon as one of the promises in an iterable fulfills or rejects, with the value or reason from that promise.

Promise.racePolyfill = (promises) => {
  return new Promise((resolve, reject) => {
    promises.forEach((promise, promiseIndex) => {
      promise.then((val) => resolve(val)).catch((error) => reject(error));
    });
  });
};

Example

Promise.racePolyfill = (promises) => {
  return new Promise((resolve, reject) => {
    promises.forEach((promise, promiseIndex) => {
      promise.then((val) => resolve(val)).catch((error) => reject(error));
    });
  });
};

const test1 = new Promise(function (resolve, reject) {
  setTimeout(reject, 1000, "one");
});
const test2 = new Promise(function (resolve, reject) {
  setTimeout(reject, 500, "two");
});
const test3 = new Promise(function (resolve, reject) {
  setTimeout(resolve, 200, "three");
});

Promise.racePolyfill([test1, test2, test3])
  .then((value) => {
    console.log(value);
  })
  .catch((err) => {
    console.log(err);
  });