A Promise represents an eventual outcome. It can fulfill with a value or reject with a reason. A then callback receives the preceding fulfillment value, and the value it returns becomes the next link in the chain. Await lets you read that value inside an async function, which itself returns a Promise. Concurrent work introduces a second choice: Promise.all rejects if any input rejects, while Promise.allSettled reports every outcome. Neither changes the order of the input positions in its result. You will implement small local jobs with both behaviors. The jobs use fictional data and resolved promises, so you can focus on language semantics without a live service or network delay.