Асинхронность при отправке данных

Доброго времени суток!

Есть задача: Делаю API, который принимает список монет и список валют, после чего уходит запрос на сторонний внешний API и получает данные по конвертации монеты в указанные валюты. Так же, чтобы лишний раз не делать запросы, то я кеширую данные.

Проблема в том, что response уходит до того, как я сформирую данные. Понимаю,что дело в асинхронности, но не могу ее настроить правильно, чтобы работало, как я подразумеваю

код:

      export async function getTickersConvertData (ctx: Koa.Context, next: Koa.Next): Promise<void> {
  const { ticker, currency } = ctx.query
  const tkr: string = ticker.toString()
  const cur: string = currency.toString()

  const arrayTickers = tkr.split(',')

  const data = await arrayTickers.map(async (key) => {
    const cacheKey = `convert${key}`

    let convertsData = cashTickersConvert.get(cacheKey)

    if (!convertsData) {
      const data = await cryptoCompare(key, cur, true)

      if (data) {
        convertsData = data
        cashTickersConvert.set(cacheKey, convertsData, 300)
      } else {
        throw new Error('No data was found')
      }
    }
    return convertsData
  })

  ctx.body = <IObject> {
    response: data,
  }
  await next()
}

Ответ, который приходит :

    {
    "response": [
        {},
        {},
        {}
    ]
}

convertsData:

[
  { ETH: { USD: 3169.01, RUB: 232120.59, EUR: 2703.5 } },
  { BTC: { USD: 46067.83, RUB: 3378079.45, EUR: 39232.63 } },
  { LTC: { USD: 180.98, RUB: 12686.81, EUR: 153.41 } }
]

Ответы (0 шт):