title: UndeliverableException related to Single.zip and possibly bindToLifecycle()
body: <p>I recently updated my app to RxJava2 and RxLifecycle3 - I'm further using Retrofit2.
  I am seeing a lot of UndeliverableExceptions now when my server requests via Retrofit and RxJava fail. Unfortunately, the stack traces do not reveal where in the code the error happens - only that it probably is a stream using <code>Single.zip()</code>.</p>
  
  <p>I looked for emitters / create constructs calling <code>onError()</code> but only found <code>tryOnError()</code> calls in my app.</p>
  
  <p>Could it be that RxLifecycle's <code>.compose(bindToLifecycle())</code> is the cause? In every place I use this call I placed it right above the <code>subscribe()</code>  call. 
  I know this approach emits <code>onError()</code> to cancel the stream. In this case, is the Single disposed properly upstream? Is there a problem with disposing a <code>Single.zip()</code> operation residing within a <code>flatmap()</code>?</p>
  
  <p>Do you have any ideas what other patterns to look for <code>UndeliverableException</code>s?</p>
  
  <pre><code>Fatal Exception: io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | &lt;Cause Exception Message&gt;
         at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
         at io.reactivex.internal.operators.single.SingleZipArray$ZipCoordinator.innerError(SingleZipArray.java:139)
         at io.reactivex.internal.operators.single.SingleZipArray$ZipSingleObserver.onError(SingleZipArray.java:175)
         at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:79)
         at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:119)
         at android.os.Handler.handleCallback(Handler.java:789)
         at android.os.Handler.dispatchMessage(Handler.java:98)
         at android.os.Looper.loop(Looper.java:164)
         at android.app.ActivityThread.main(ActivityThread.java:6938)
         at java.lang.reflect.Method.invoke(Method.java)
         at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
  </code></pre>