title: RxJava on Android: Undeliverable exception in blockingAwait on timeout
body: <p>Can somebody, please explain why this code throws undeliverable exception and how to fix it:</p>
  <pre><code>val completable = Completable.fromAction { Thread.sleep(10000) }.subscribeOn(Schedulers.io())
  if (!completable.blockingAwait(5, TimeUnit.SECONDS)) {
      System.out.println(&quot;timeout triggered&quot;)
  } else {
      System.out.println(&quot;all good&quot;)
  }
  </code></pre>
  <p>When running this code it results in the following exception:</p>
  <pre><code>08-22 14:01:57.575 31345-31345/com.myapp I/System.out: timeout triggered
  
  08-22 14:01:57.593 31345-31399/com.myapp [CRASH] : 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 | java.lang.InterruptedException , Abort
       Exception: 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 | java.lang.InterruptedException`
  </code></pre>