Por que o switchMap não cancela o observador anterior?

Tenho o método descrito no componente (controlador):

public requestPassportData(): void {
    const th = this;
    const data = {
      get_scanned_data: true
    };

    Observable.timer(0, 1000)
      .switchMap(() => this.requestMethods.requestPassportData(data))
      .takeWhile(() => {
        return (
          th.formRegister.currentForm().index == 1 ||
          th.formRegister.currentForm().index == 2 ||
          th.formRegister.currentForm().index == 3
        );
      })
      .subscribe(response => {});
}

Se chamar o métodorequestPassportData() cinco vezes, ele enviará cada segundo pedido de cinco para o servidor. Por que o switchMap não cancela o último observador?

questionAnswers(1)

yourAnswerToTheQuestion