Promise.allSettled() waits for all promises to settle. It never rejects. You get the status and value/reason for each.
Promise.allSettled([p1, p2, p3])
.then(results => {
results.forEach(r => {
if (r.status === "fulfilled") {
console.log(r.value);
} else {
console.log(r.reason);
}
});
});