title: RxJS: Even if used `shareReplay()` on source observable, `throwError()` gets executed separately for each observable
body: <p>I'm using RxJS <code>shareReplay()</code> operator on an observable (<code>courses$</code>) to share observable stream among other two observables (<code>beginnerCourses$</code> and <code>advancedCourses$</code>). It's working fine and single API call response is shared between both observables on success.</p>
  
  <p>But, when it comes to error, these observable don't share error and error is seen to be thrown twice in the browser console. Doesn't <code>shareReplay()</code> operator shares error also? Is it an intended behavior?</p>
  
  <pre class="lang-js prettyprint-override"><code>const http$ = createHttpObservable('/api/courses');
  
  const courses$ = http$
    .pipe(
      map(res =&gt; res['payload'] ),
      shareReplay(),
      catchError(err =&gt; {
        return throwError(err);
      })
    );
  
  this.beginnerCourses$ = courses$
    .pipe(
      map(courses =&gt; courses
        .filter(course =&gt; course.category === 'BEGINNER')));
  
  this.advancedCourses$ = courses$
    .pipe(
      map(courses =&gt; courses
        .filter(course =&gt; course.category === 'ADVANCED')));
  
  }
  </code></pre>