Angular2: confundirse con el alcance de cierre de captura observable

Preguntándome si puedes dar un poco de ayuda. Parece que me estoy confundiendo un poco cuando se trata de usarcatch conObservables.

Básicamente, lo que intento hacer es lo siguiente: cuando mi API devuelve un error 403, quiero realizar algunas acciones en miTokenStore, es decir, eliminar el token local y marcar al usuario como no autenticado. La forma en que trato de hacer esto puede ser incorrecta, así que avíseme si hay una mejor manera de lograrlo.

Estoy tratando de lograr esto con el siguiente código:

APIConnector.service.ts - un servicio único para métodos de comunicación 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') });
    }
}

En cada uno de mis servicios que usan APIConnector, tengo métodos catch en elObservables, para ejecutar elhandleError cierre. p.ej.

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);
}

Sin embargo, esto da el siguiente error:

EXCEPCIÓN: TypeError: no se puede leer la propiedad 'destruir' de indefinido

Presumiblemente esto se debe a que handleError es un cierre. Sin embargo, no estoy seguro de la mejor manera de lidiar con esto.

Cualquier idea sería muy apreciada

Respuestas a la pregunta(1)

Su respuesta a la pregunta