In my code below, I would like to execute a, b and c but then a1 since a1 is added within a. However, it doesn't look like Promise.all is updated with the new a1 added. What's the best way to do this? Is there Promise all update? I try not to do await a1 within a.
var arr = [];
async function a() {
  return new Promise(resolve => {
    setTimeout(() => {
    console.log("Resolve a");
    arr.push(a1);
    resolve(1);
    }, 2000);
  });
}
async function b() {
  return new Promise(resolve => {
    setTimeout(() => {
    console.log("Resolve b");
    resolve(2);
    }, 4000);
  });
}
async function c() {
  return new Promise(resolve => {
    setTimeout(() => {
    console.log("Resolve c " + arr.length);
    resolve(3);
    }, 6000);
  });
}
async function a1() {
  return new Promise(resolve => {
    setTimeout(() => {
    console.log("Resolve a1");
    resolve(11);
    }, 2000);
  });
}
arr = [a(), b(), c()];
(async function run() {
  await Promise.all(arr);
})();
console.log('Done');
 
     
    