Promise.all: takes in an array of Promises (or values), and will return a resolved promise whose value is an array of the resolved values of the passed in promises if they all resolve, otherwise returns a rejected promise with the reason set to the reason the first promise rejected
Promise.race: takes in an array of Promises (or values), and will return a resolved promise whose value is the value of the first promise that resolves, or reject with the first promise that rejects