Axios intercepteurs et asynchrone de connexion

Je suis la mise en œuvre de jeton d'authentification dans mon application web. Mon access token expire toutes les N minutes et qu'un refresh token est utilisé pour la connexion et d'obtenir un nouveau access token.

- Je utiliser Axios pour tous mes appels de l'API. J'ai un intercepteur mis en place pour intercepter 401 réponses.

axios.interceptors.response.use(undefined, function (err) {
  if (err.status === 401 && err.config && !err.config.__isRetryRequest) {
    serviceRefreshLogin(
      getRefreshToken(),
      success => { setTokens(success.access_token, success.refresh_token) },
      error => { console.log('Refresh login error: ', error) }
    )
    err.config.__isRetryRequest = true
    err.config.headers.Authorization = 'Bearer ' + getAccessToken()
    return axios(err.config);
  }
  throw err
})

En gros, comme je l'interception d'une réponse 401, je veux faire un login et de réessayer l'original a rejeté la demande avec les nouveaux jetons. Mon serviceRefreshLogin appels de fonction setAccessToken() dans son then bloc. Mais le problème est que
le then bloc arrive plus tard que la getAccessToken() dans l'intercepteur, de sorte que la nouvelle tentative qui se passe avec l'ancien expiré informations d'identification.

getAccessToken() et getRefreshToken() il suffit de retourner l'existant jetons stockés dans le navigateur (ils gèrent localStorage, cookies, etc).

Comment puis-je assurer les déclarations ne pas exécuter jusqu'à ce qu'une promesse de rendements?

(Voici un numéro correspondant sur github: https://github.com/mzabriskie/axios/issues/266)