Closure con Async Race Condicional

Dificultad: Difícil JavaScript advanced coding
const secreto = (()=> {
  letval = 0;
  return async (p) => 
    await Promise.race([p, new Promise(r => setTimeout(() => r(++val), 10))]);
})();

const r = await Promise.all([secreto(Promise.resolve(100)), secreto(Promise.resolve(200)), secreto(Promise.resolve(300))]);
console.log(r);
📥 Inputs:
Promises: 100, 200, 300
❓ ¿Cuál es el output?
Ingresa tu respuesta abajo