Loop infinito ao capturar erro do BehaviorSubject inscrito pelo canal assíncrono no Angular 2

Eu tenho um rxjsBehaviorSubject Eu assino o uso de umasync tubo de Angular 2 e eu tenho umcatch para lidar com eventuais erros que ele lança. O problema é que toda vez que eu recebo um erro, ele inicia um loop infinito porque minha captura retorna o Observable derivado doBehaviorSubject e eu acho que oasync tubo reinscreve para o observável quando eu retornar ocatch.

O código é mais ou menos assim:

ListService - é um@Injectable onde eu tenho o BehaviorSubject e a propriedade com oObservable.

private listSubject: BehaviorSubject<IItem[]>;

public get listObservable() {
    return this.listSubject.asObservable()
}

private error(error: IError) {
    this.listSubject.error(error);
}

ListComponent - é um@Component que mostra a lista observável.

// Template
<items-view [items]="list | async"></items-view>

// Code
public get list() {
    return this.listService.listObservable
        .catch((error) => {
            this.handleError(error);
            return this.listService.listObservable;
        });
}

Como você pode ver, minha captura retorna o observável atual, pois DEVE retornar um observável. Então, o que acontece é que quando eu envio othis.listSubject.error(error) o código entra em um loop infinito chamando ocatch indefinidamente porque, como eu disse antes, acho que oBehaviourSubject lança novamente o erro porque oasync o tubo reinscreve o observável quando ocatch retorna.

Tentei retornar minha matriz em cache anterior no erro para retornar umObservable.of(error.cached), mas recebi um novo conjunto de problemas porque acho que o assíncrono não estava inscrito noBehaviorSubject não mais.

Como eu disse antes, esta é uma representação aproximada do meu código real, mas a lógica é basicamente isso.

Eu tenho tentado várias abordagens diferentes para isso, mas não consegui parar esse loop infinito.

Obrigado antecipadamente pela ajuda.

questionAnswers(1)

yourAnswerToTheQuestion