//i'm trying
let promise = allDoc.map((stage, index) =>  new Promise(async (resolve, reject) => {
     for(let i=0; i < stage.children.length; i++){
        let layerItem  = stage.children[i].children
        for(let key of layerItem){
            //key.toImage is a library, so it only supports callback.
            await key.toImage({
                async callback(img) {
                    key.attrs.img = img 
                    resolve(await addPhoto(key.attrs))
                }
            })
        }
     }
}))
//It should run 40 times, but only run and run 20 times
await Promise.all(promise).then(async result => {
    console.log(result)
})
async function addPhoto(params){
  const stored = await s3.upload(params).promise()
  return stored
}How do I know when a callback is complete inside multiple loops? I tried promise.all, but promise.all gets executed before it completes.
