title: Mono async exception handling
body: <p>I'm just trying to figure out how exception handling works in reactor library.</p>
  
  <p>Consider the following example:
  </p>
  
  <pre><code>public class FluxTest {
  
  @Test
  public void testIt() throws InterruptedException {
      Scheduler single = Schedulers.single();
  
      CountDownLatch latch = new CountDownLatch(1);
  
      Mono.just("hey")
              .subscribeOn(single)
              .doOnError(e -&gt; System.out.println("ERROR1: " + e.getMessage()))
              .doOnTerminate((r, e) -&gt; {
                  if (e != null) System.out.println("ERROR3: " + e.getMessage());
                  latch.countDown();
              })
              .subscribe(
                      it -&gt; { throw new RuntimeException("Error for " + it); },
                      ex -&gt; { System.out.println("ERROR2: " + ex.getMessage());}
                      );
  
      latch.await();
  }
  
  }
  </code></pre>
  
  <p>Actually, I can't see any of error handling code block executes.
  Test terminates without any message. Also, I tried to remove <code>doOnError, doOnTerminate</code> processors with no luck.</p>