title: Break the CompletableFutures chain
body: <p>You can chain running blocks with <code>CompletableFuture</code> like this:</p>
  
  <pre><code>CompletableFuture
      .supplyAsync(block1)
      .thenApply(block2)
      .thenApply(block3)...
  </code></pre>
  
  <p>My function returns one such <code>CompletableFuture</code> with 2 blocks, so user can continue chaining more if he wants.</p>
  
  <pre><code>public CompletableFuture foo() {
      return CompletableFuture
                 .supplyAsync(block1).
                 .thenApply(block2);
  }
  </code></pre>
  
  <p>User may use this like:</p>
  
  <pre><code>foo().thenApply(block3).join();
  </code></pre>
  
  <p>I want to add <code>.exceptionaly()</code> handler in my method (so user does not see it), but one that can <strong>break</strong> the chain and any possible user chain if any of my blocks fails! In other words - if <code>block1</code> or <code>block2</code> fails, I don't want to continue with any possible user blocks (<code>block3</code>) that he can chain onto the return value of <code>foo</code>.</p>
  
  <p>Bonus question: is there something better then <code>CompletableFuture</code> in Java world?</p>