title: RxJava onCompleted and onTerminate on main thread
body: <p>I'm using RxJava with Retrofit 2.0 on Android for network requests.</p>
  
  <p>When I'm creating the observable, I add the following to it:</p>
  
  <pre><code>observable = observable
      .observeOn(AndroidSchedulers.mainThread())
      .subscribeOn(Schedulers.io())
      .unsubscribeOn(Schedulers.io())
  </code></pre>
  
  <p>Then if I add a:</p>
  
  <pre><code>observable = observable.doOnTerminate(new Action0() {
                  @Override
                  public void call() {
                      Log.d("OBS", "[" + Thread.currentThread().getName() + "] onTerminate");
                  }
              });
  </code></pre>
  
  <p>Or similar for <code>doOnError</code> and <code>doOnCompleted</code> the callbacks are executed on the IO thread, while <code>doOnNext</code> is executed on the main thread.</p>
  
  <p>However, what I really want is for all callbacks to go to the main thread, but the execution should stay on the IO thread.</p>
  
  <p>Is there an elegant solution to this without having to manually wrap my implementations with a block to post something to the main thread?</p>