Promises & then/catch
What advantage does this pattern have over Promise.all()?
const promises = urls.map(url => fetch(url));
const results = [];
for (const promise of promises) {
try {
results.push(await promise);
} catch (error) {
console.error(error);
}
}