Angular2- Confundindo-se com o escopo de fechamento do Observable Catch

Querendo saber se você pode dar um pouco de assistência. Parece que estou ficando um pouco confuso quando se trata de usarcatch comObservables.

Basicamente, o que estou tentando fazer é o seguinte: Quando minha API retorna um erro 403, desejo executar algumas ações no meuTokenStore, ou seja, exclua o token local e marque o usuário como não autenticado. A maneira como estou tentando fazer isso pode estar errada, por favor, deixe-me saber se há uma maneira melhor de fazer isso.

Estou tentando fazer isso com o seguinte código:

APIConnector.service.ts - um serviço único para métodos de comunicação API

import {Injectable} from 'angular2/core';
import {Http, Response, Headers, RequestOptions} from 'angular2/http';
import {Observable}     from 'rxjs/Observable';
import * as _ from 'lodash';
import {Logger}     from './logger.service';
import {TokenStore} from '../stores/token.store';

@Injectable()
export class APIConnector {

    private _apiUrl:string = 'https://api.sb.zerojargon.com/';
    private _token:string = null;

    constructor(
        private _http:Http,
        private _logger:Logger,
        private _tokenStore:TokenStore
    ) {}

    get(endpoint:String, includes:Array<string>) {
        let includeString = (!_.isUndefined(includes)) ? this._parseIncludes(includes) : '';
        let headers = this._createHeaders();
        let options = new RequestOptions({ headers: headers });
        return this._http.get(this._apiUrl + endpoint + '?include=' + includeString, options);
    }

    post(endpoint:String, formData:Object, includes:Array<string>) {
        let includeString = (!_.isUndefined(includes)) ? this._parseIncludes(includes) : '';
        let body = JSON.stringify(formData);
        let headers = this._createHeaders();
        let options = new RequestOptions({ headers: headers });
        return this._http.post(this._apiUrl + endpoint + '?include=' + includeString, body, options);
    }

    handleError(error: Response) {
        // log out the user if we get a 401 message
        if (error.json().error.http_code === 401) {
            this._tokenStore.destroy();
        }
        return Observable.throw(error.json().error || 'Server error');
    }

    private _parseIncludes(includes:Array<String>) {
        return includes.join();
    }

    private _createHeaders() {
        return new Headers({ 'Content-Type': 'application/json', 'Authorization': 'bearer ' + localStorage.getItem('token') });
    }
}

Em cada um dos meus serviços que usam o APIConnector, tenho métodos de captura noObservables, para executar ohandleError fecho. por exemplo.

public createEvent(event:Object) {
    let endpoint = this._endpoint;
    return this._apiConnector.post('clients/'+this.client+'/events', event, this._defaultIncludes)
        .map(res => {
            return this._transformer.map('event', <Object[]>res.json());
        })
        .catch(this._apiConnector.handleError);
}

No entanto, isso fornece o seguinte erro:

EXCEÇÃO: TypeError: Não é possível ler a propriedade 'destroy' de undefined

Presumivelmente, isso ocorre porque handleError é um fechamento. Não tenho certeza da melhor maneira de lidar com isso, no entanto.

Qualquer pensamento seria muito apreciado

questionAnswers(1)

yourAnswerToTheQuestion