Preface: So I've googled around and read a lot of stackoverflow questions and various blogs all leading me down 3 routes: async forEach packages, promises and for loops. Ultimately I went with for loops since they seemed the best to acommplish what I needed to do.
So I need to take the entries of urls and parse them through fetch and push the resulting numbers into an array. I'm using the following code:
var essencePowers = []
var essenceUrls = []
  essences.forEach(function (id) {
    essenceUrls.push(`https://${region}.api.blizzard.com/data/wow/azerite-essence/${id.id}?namespace=static-us,${id.rank}`)
  })
  console.log(essenceUrls)
  async function getEssences() {
    for (const [idx, url] of essenceUrls.entries()) {
      var u = url.split(',')
      var ess = await fetch(u[0], { headers: { 'Authorization': 'Bearer ' + access_token } })
      var essBody = await ess.json()
      await essencePowers.push(essBody.powers.[u[1] - 1].id)
      console.log(essencePowers) // [2, 34, 54, 22]
    }
  }
  getEssences()
  console.log(essencePowers) // []
}
Running the above code will produce the numbers in the sequence I expect, but the moment I call the the array after the getEssences() function, I get [].
At this point, I'm a little confused as to where I've gone astray.
