I need to fetch all direct reports for the logged in manager and then display a card component for each one. I have to make a separate async call getPhoto(id) for each report by iterating over the response array of employee objects. 
The following is my original attempt, which after running eslint, I realized is inefficient due to the sequential await's inside the for...of loop. 
async function getReports() {
  const response = await fetch('/current_user_direct_reports')
    .then(res => res.json())
    .then(data => data.value)
    .catch(error => console.log(error));
  for (const report of response) {
    report.photo = await getPhoto(report.userPrincipalName);
  }
  setReports(response)
}
useEffect(() => {
  getReports();
}, []);
This works but is rather slow. I tried adjusting the code to collect a list of employee objects, each containing a photo Promise, in order to allow all requests to resolve simultaneously. 
async function getReports() {
  const response = await fetch('/current_user_direct_reports')
    .then(res => res.json())
    .then(data => data.value)
    .catch(error => console.log(error));
  const reportsAndPhotos = [];
  for (const report of response) {
    const emp = report;
    emp.photo = getPhoto(report.userPrincipalName);
    reportsAndPhotos.push(emp);
  }
  return (await Promise.all(reportsAndPhotos));
}
useEffect(() => { 
  async function getEmployees() {
    const reportsAndPhotos = await getReports();
    setReports(reportsAndPhotos);
    setLoaded(true);
  }
  getEmployees();
}, []);
However, my response is repeatedly rendered empty and I cannot identify what I'm doing wrong. I thought Promise.all() would wait for everything to resolve before returning.
