Напишите функцию, которая принимает массив промисов и возвращает результат того, который завершился первым. При этом если первый промис выдал ошибку - необходимо вернуть ее. Причем, решение не должно вызывать Promise.race стандартной библиотеки.
Пример:
const firstPromise = new Promise((resolve) =>
  setTimeout(() => resolve(300), 300)
);
const secondPromise = new Promise((resolve) =>
  setTimeout(() => resolve(200), 200)
);
const thirdPromise = new Promise((resolve) =>
  setTimeout(() => resolve(100), 100)
);
promiseRace([firstPromise, secondPromise, thirdPromise]); // 100
function promiseRace(promises) {
          let isResolve = false;
          [...promises].forEach((prom) =>
            prom.then((p) => {
              if (p && !isResolve) {
                isResolve = true;
                if (p instanceof Error) throw p;
                return p;
              }
            })
          );
      }
если перед return ставлю console.log, то консоль результат выдает верный, а ретурн undefined. Решение не прошу, но хочу ответ на вопрос, почему так?