@Test public void immediateComposeFailed() throws Exception { final ImmediateCompleted<From> future = new ImmediateCompleted<>(caller, from); doReturn(future).when(composeFailedFn).apply(cause); assertThat(base.thenComposeFailedFailed(composeFailedFn, cause), is(future)); }
Stage<T> thenComposeFailedFailed( final Function<? super Throwable, ? extends Stage<T>> fn, final Throwable cause ) { try { return fn.apply(cause); } catch (final Exception e) { return executionExceptionFailed(e, cause); } }
AbstractImmediate implements Stage<T> { Stage<T> thenComposeFailedFailed( final Function<? super Throwable, ? extends Stage<T>> fn, final Throwable cause ) { try { return fn.apply(cause); } catch (final Exception e) { return executionExceptionFailed(e, cause); } } }
AbstractImmediate implements Stage<T> { Stage<T> thenComposeFailedFailed( final Function<? super Throwable, ? extends Stage<T>> fn, final Throwable cause ) { try { return fn.apply(cause); } catch (final Exception e) { return executionExceptionFailed(e, cause); } }  }
AbstractImmediate implements Stage<T> { Stage<T> thenComposeFailedFailed( final Function<? super Throwable, ? extends Stage<T>> fn, final Throwable cause ) { try { return fn.apply(cause); } catch (final Exception e) { return executionExceptionFailed(e, cause); } }   }
AbstractImmediate implements Stage<T> { Stage<T> thenComposeFailedFailed( final Function<? super Throwable, ? extends Stage<T>> fn, final Throwable cause ) { try { return fn.apply(cause); } catch (final Exception e) { return executionExceptionFailed(e, cause); } }    }