function updateUsagePlansAndApisList (bustCache = false) {
  // if we've already tried, just return that promise
  if (!bustCache && catalogPromiseCache) return catalogPromiseCache

  store.apiList.loaded = false

  // eslint-disable-next-line no-return-assign
  return catalogPromiseCache = apiGatewayClientWithCredentials()
    .then(apiGatewayClient => apiGatewayClient.get('/catalog', {}, {}, {}))
    .then(({ data = { apiGateway: [], generic: [] } }) => {
      store.usagePlans = data.apiGateway
      store.apiList = {
        loaded: true,
        apiGateway: getApiGatewayApisFromUsagePlans(store.usagePlans), // MUST create
        generic: data.generic
      }
    })
    .catch(() => {
      store.usagePlans = []
      store.apiList = {
        loaded: true,
        apiGateway: [],
        generic: []
      }
    })
}
Update the catalog for the current user. Both request and response are cached, so unless the cache is busted, this should only ever make one network call.

@param {Boolean} [bustCache=false]   Ignore the cache and re-make the network call. Defaults to false.