Implement promiseAllSettled(items), your own version of Promise.allSettled. Don't call Promise.allSettled or the other built-in combinators: Promise.all, Promise.any and Promise.race.
items is an array of promises and plain values. Return a promise that waits for every item to settle, which means to resolve or reject. It resolves with one record per item, in input order:
{ status: "fulfilled", value }for an item that resolved. A plain value counts as resolved.{ status: "rejected", reason }for an item that rejected.
The returned promise never rejects. An empty array resolves to [].
Input: await promiseAllSettled([Promise.resolve(1), Promise.reject('no'), 3])
Output: [{ status: 'fulfilled', value: 1 }, { status: 'rejected', reason: 'no' }, { status: 'fulfilled', value: 3 }]