future = new FailsafeFuture<T>();
if (circuitBreaker != null && !circuitBreaker.allowsExecution()) {
CircuitBreakerOpenException e = new CircuitBreakerOpenException();
if (fallback == null)
throw e;
<BUG>future.complete(null, e, (BiFunction<T, Throwable, T>) fallback);
</BUG>
return future;
<BUG>}
AsyncExecution execution = new AsyncExecution(callable, retryPolicy, circuitBreaker, scheduler, future,
(ListenerConfig<?, Object>) this, (BiFunction<T, Throwable, T>) fallback);</BUG>
callable.inject(execution);

future = new FailsafeFuture<T>();
if (circuitBreaker != null && !circuitBreaker.allowsExecution()) {
CircuitBreakerOpenException e = new CircuitBreakerOpenException();
if (fallback == null)
throw e;
future.complete(null, e, (CheckedBiFunction<T, Throwable, T>) fallback);
return future;
}
AsyncExecution execution = new AsyncExecution(callable, scheduler, future, (FailsafeConfig<Object, ?>) this);
callable.inject(execution);
