title: Replace listeners with RxJava
body: <p>Currently I am investigating a migration to RxJava and decided that  a manager of mine(accountManager) would be an interesting place to start. Currently the Manager has a list of listeners and sends updates accordingly, both when the account gets updated and when something goes wrong.</p>
  
  <pre><code>private List&lt;WeakReference&lt;ProfileChangeListener&gt;&gt; mListeners = new ArrayList&lt;&gt;();
  
  public interface ProfileChangeListener {
      void onProfileUpdated(Account account);
      void onProfileFailed(Exception e);
  }
  </code></pre>
  
  <p>My Rx solution involves a <code>Subject</code></p>
  
  <pre><code>private SerializedSubject&lt;Account, Account&gt; mManagerSubject = new SerializedSubject&lt;&gt;(BehaviorSubject.&lt;Account&gt;create());
  
  public Observable&lt;Account&gt; observe() {
      return mManagerSubject;
  }
  </code></pre>
  
  <p>and then when an update happens I call one of the following:</p>
  
  <pre><code>private void onProfileUpdated(Account account) {
      mManagerSubject.onNext(account);
  }
  
  private void onProfileFailed(final Exception e) {
      mManagerSubject.onError(e);
  }
  </code></pre>
  
  <p><strong>Issue</strong></p>
  
  <p>The Issue is that once <code>onError</code> is called anyone listening via <code>observe</code> will never get another update from <code>onNext</code>.</p>
  
  <p>I still want the subscribers to receive onError so they can handle the error state but at a later time <code>onNext</code> could still be called with an updated account and I still want the subscribers to handle the updated account. </p>
  
  <p>I've tried solutions using <code>onErrorResumeNext</code>, <code>onErrorReturn</code> <code>onExceptionResumeNext</code> but none of them propagate the <code>onError</code>.</p>
  
  <p><em>TLDR:</em> How do I keep the subscribers subscribed after onError is called while still propagating onError?</p>