class DefaultCompletableAsyncResult implements CompletableAsyncResult<T> {

  @Override
  public <U> AsyncCompletion thenAcceptBoth(AsyncResult<? extends U> other, BiConsumer<? super T, ? super U> consumer) {
    requireNonNull(other);
    requireNonNull(consumer);
    return new DefaultCompletableAsyncCompletion(future.thenAccept(t -> other.thenAccept(u -> consumer.accept(t, u))));
  }

    DefaultCompletableAsyncResult();
    DefaultCompletableAsyncResult(CompletableFuture<T> future);

}