private static <X> io.reactivex.functions.Function<Single<X>, CompletionStage<X>> singleToFuture() {
    return single -> {
      final CompletableFuture<X> fut = new CompletableFuture<>();
      Disposable unused = single.subscribe(fut::complete, fut::completeExceptionally);
      return fut;
    };
  }
Blocking get as list of results
criteria/common/src/org/immutables/criteria/repository/Publishers.java