angularjs http interceptor class (ES6) perde a ligação para 'this'

Estou criando um aplicativo AngularJS usando classes ES6 com rastreamento de transpilação para ES5 no formato AMD.

no meu módulo, importo a classe interceptora e a registro como um serviço e, em seguida, registro esse serviço com os $ httpProvider.interceptors em module.config:

var commonModule = angular.module(moduleName, [constants.name]);

import authenticationInterceptor from './authentication/authentication.interceptor';

commonModule.service('authenticationInterceptor', authenticationInterceptor);

commonModule.config( $httpProvider =>  {
    $httpProvider.interceptors.push('authenticationInterceptor');
});

Minha classe de interceptores injeta ambos$ q e a$ window serviços, os salva no construtor para uso posterior. Eu segui esta parte com o depurador e a injeção está acontecendo corretamente:

'use strict';
/*jshint esnext: true */

var authenticationInterceptor = class AuthenticationInterceptor {

    /* ngInject */
    constructor($q, $window) {
        this.$q = $q;
        this.$window = $window;
    }

    responseError(rejection) {
        var authToken = rejection.config.headers.Authorization;
        if (rejection.status === 401 && !authToken) {
            let authentication_url = rejection.data.errors[0].data.authenticationUrl;
            this.$window.location.replace(authentication_url);
            return this.$q.defer(rejection);
        }
        return this.$q.reject(rejections);
    }
}

authenticationInterceptor.$inject = ['$q', '$window'];

export default authenticationInterceptor;

Quando faço uma solicitação que responde com um401 o interceptador é acionado adequadamente, mas no método 'responseError' a variável 'this' aponta para o objeto window e não para o meu interceptor, portanto, não tenho acesso aisso. $ q ouessa janela. $.

Eu não consigo descobrir o porquê? Alguma ideia?

questionAnswers(9)

yourAnswerToTheQuestion