title: How to continue catchError in timer (rxjs)
body: <p>I have a service that is responsible to execute a httpClient.get every x seconds, using a timer.
  I need this timer to start running whenever the service is up, so the <strong>timer</strong> is defined in the <strong>service</strong> <strong>constructor</strong>. According to my understanding, the subscription should be registered in the timer scope as seen below (I don't want to change it if there's no need, unless it is incorrect).</p>
  <p>The all system is working fine as long as there are no errors\exceptions\error 500 exception from the backend server.
  Now, I need 2 things:</p>
  <ol>
  <li>I would like to <strong>catchError</strong> whenever there is a problem in the backend server.</li>
  <li>I would like the observer to keep running according to the timer times (to the next tick), even if there is an exception.
  My final result should be reaching the popUpAlert in the component whenever there is exception
  See my code - this the webapi controller:</li>
  </ol>
  <pre class="lang-cs prettyprint-override"><code>public IActionResult getSomeErrorAsTest()
  {
      try
      {
          throw new Exception(&quot;Serer error&quot;);
      }
      catch(Exception ex)
      {
          return StatusCode(StatusCodes.Status500InternalServerError, new List&lt;string&gt;());
          //throw ex;
      }
  }
  </code></pre>
  <p>This is the service (assume that the data changes in every get request - no need to implement if it really do):</p>
  <pre><code>export class MyService
  {
      MyDataSubject = new Subject&lt;any[]&gt;();
      MyDataChanged :Observable&gt;any[]&gt; = this.MyDataSubject.asObservable();
      
      subscribe :Subscription;
      constructor(private httpClient : HttpClient)
      {
          this.subscribe = timer(0, 30000).pipe(
          switchMap(()=&gt;
              this.getData())).subscribe();
      }
      getData()
      {
          return this.httpClient.get&lt;any[]&gt;(&lt;controller url&gt;)
          .pipe(
              tap(res =&gt;
              {
                  this.MyDataSubject.next(res);
              }),
              catchError(error =&gt;
                  {
                      debugger;//I would expect to catch the debugger here, but nothing happens
                      return throwError(error);
                  })
              )
      }
  }   
  </code></pre>
  <p>The consumer component:</p>
  <pre><code>export class MyComponent (private mySrv : MyService)
  {
      getMyData()
      {
          let sub =this.mySrv.MyDataChanged.subscribe(result =&gt; doSomething(),
                                                      error=&gt; popUpAlert());
      }
  }
  </code></pre>