title: RxJava using zip to chain multiple calls
body: <p>I'm trying to construct an observable from a chain of API calls but I can't get it to work. What I have is four API calls <code>ApiA</code>, <code>ApiB</code>, <code>ApiC</code> and <code>ApiD</code> that return Observables using <code>RxJavaCallAdapterFactory</code>. <code>ApiA</code> and <code>ApiB</code> have to be called first and then after both are executed ApiC and ApiD should be called. After last two are executed View is initialized. I'm using zip operator for waiting to calls to finish, I'm not sure that's the way to go but I'm quite new to <code>RxJava</code> so if there is another and better way to do that please let me know. 
  Below is my code with comments showing where I got stuck</p>
  
  <pre><code>public Observable syncData() {
      return Observable.zip(
          // these two calls are executed
          callApiA(),
          callApiB(),
          (o, o2) -&gt; Observable.zip(
              /* these two calls are not executed, it seems as if this zip has 
              no subscriber but i don't know why ... */
              callApiC(),
              callApiD(),
              (o, o2) -&gt; {
                  someLogic();
                  return Observable.empty();
              }));
  }
  </code></pre>
  
  <p>And in view I just subsribe to this method</p>
  
  <pre><code>viewModel.syncData().subscribe(
              o -&gt; mainAdapter.update(),
              throwable -&gt; throwable.printStackTrace()
  );
  </code></pre>
  
  <p>Again I'm fairly new to RxJava so any help will be appreciated. thanks</p>