Promise.allSettled attend que toutes les promesses soient terminées, qu'elles réussissent ou non, et renvoie un tableau d'objets décrivant chacune : status (fulfilled ou rejected) et value ou reason. Elle ne rejette jamais, ce qui permet d'exploiter les succès malgré des échecs partiels.
Exemple
const res = await Promise.allSettled([a(), b()])
res.filter(r => r.status === 'fulfilled')