Написал функцию, которая принимает массив промисов и возвращает первый завершившийся. Promise.race нельзя использовать
function promiseRace(promises) {
    let arr = [];
    for (let elem of promises) {
       elem
       .then(() => {
           arr.push(elem)
       })
       .catch(
            console.error()
        )
    }
    return arr[0]; //ожидаю Promise {<fulfilled>: 100}. а получаю undefined
}
подскажите, почему не проходят два условия:
1.  возвращать результат первого выполнившегося промиса
2. должна прокидывать ошибку
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]); // должен вернуть первый выполнившийся промис