function racePromises(values) {
  return harden(memoRace.call(BestPipelinablePromise, values));
}
Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
or rejected.

Unlike `Promise.race` it cleans up after itself so a non-resolved value doesn't hold onto
the result promise.

@template {readonly unknown[] | []} T
@param {T} values An iterable of Promises.
@returns {Promise<Awaited<T[number]>>} A new Promise.