Búsqueda de sitios web

javascript - Rechazo de promesa no manejado al iterar sobre llamadas asíncronas antes de esperar a que todas se completen


Me he encontrado con un problema extraño para el que no puedo encontrar una explicación en ningún lado. En el siguiente código, estoy intentando obtener un número de entidades position, cada una por su id usando una llamada a la API.

Algunas solicitudes de identificación podrían terminar con un 404, y no me importa eso, por eso estoy usando Promise.allSettled()

    const positionsPromises = idList.map((id) => {
      return this.positionRepository.getPositionById(id);
    });

    const positions = await Promise.allSettled(positionsPromises);

Esto generalmente funciona, pero para IDs que no existen (o cualquier otro error), obtengo los famosos registros de Node para UnhandledPromiseRejectionWarning

sin embargo... cuando tomo el mismo código .map() y simplemente lo coloco directamente dentro de Promise.allSettled(), no obtengo tales cosas, y funciona como se espera: algunos se resuelven, otros se rechazan, y puedo iterar sobre positions para verificar cada uno.

    const positions = await Promise.allSettled(
      idList.map((id) => {
        return this.positionRepository.getPositionById(id);
      }),
    );

¿Por qué está pasando esto? ¿Estoy haciendo algo mal al devolver un array de Promesas pendientes antes de esperarlas todas?