Promise.all
TypeScript in Production notes about Promise.all
Choose execution and state ownership
Awaiting Async Work in TypeScript Loops: Choose Sequential `for...of` or Concurrent `Promise.all`
Use `for...of` when each operation must finish before the next starts; use `Promise.all` for independent operations, while accounting for its rejection behavior.

