I'm currently looping through a paginated API like this, but it seems extremely bulky and repeated and I'm wondering if there's a simpler and faster way to do this.
async function myFunc () {
  const totalPages = await getTotalPages()
  const res = await new Promise(async (resolve) => {
    const completedPages = []
    const failedPages = []
    let allPages = []
    for (let pageNum = 0; pageNum < totalPages; pageNum++) {
      getPage(pageNum).then((page) => {
        allPages.push(...page)
        completedPages.push(pageNum)
        if ((completedPages.length + failedPages.length) === totalPages) {
          return resolve({ all_pages: allPages })
        }
      }).catch((err) => {
        console.log(pageNum, err)
        failedPages.push(pageNum)
        if ((completedPages.length + failedPages.length) === totalPages) {
          return resolve({ all_pages: allPages })
        }
      })
    }
  })
  return res
}
