const a = new Promise((resolve, reject) => {
console.log("Promise a")
setTimeout(() => resolve('a is resolved'), 1000)
})
const b = new Promise((resolve, reject) => {
console.log("Promise b")
setTimeout(() => resolve('b is resolved'), 1500)
})
const c = new Promise((resolve, reject) => {
console.log("Promise c")
setTimeout(() => reject('c is reject'), 1250)
})
// normally a and b would resolve in here but with c erroring
// nothing gets into the "then"
Promise.all([a, b, c]).then((msgs) => {
console.log("all messages resolved")
console.log(msgs)
}).catch((err) => {
console.warn(`error caught: ${err}`)
})