code: public static <T> CompletableFuture<T> orderedFuture(CompletableFuture<T> future) {
      CompletableFuture<T> newFuture = new OrderedFuture<>();
      future.whenComplete((r, e) -> {
        if (e == null) {
          newFuture.complete(r);
        } else {
          newFuture.completeExceptionally(e);
        }
      });
      return newFuture;
    }
docs: Returns a future that completes callbacks in add order.
  
  @param <T> future value type
  @return a new completable future that will complete added callbacks in the order in which they were added