docs: public static <T, X extends Throwable> Tuple3<CompletableFuture<Subscription>, Runnable, CompletableFuture<Boolean>> forEachX(
              final FutureStream<T> stream, final long x, final Consumer<? super T> consumerElement) {
          final CompletableFuture<Subscription> subscription = new CompletableFuture<>();
          final CompletableFuture<Boolean> streamCompleted = new CompletableFuture<>();
          return tuple(subscription, () -> {
              stream.subscribe(new Subscriber<T>() {
  
                  @Override
                  public void onSubscribe(final Subscription s) {
                      Objects.requireNonNull(s);
                      if(x!=0)
                          s.request(x);
                      subscription.complete(s);
                  }
  
                  @Override
                  public void onNext(final T t) {
                      consumerElement.accept(t);
  
                  }
  
                  @Override
                  public void onError(final Throwable t) {
  
                  }
  
                  @Override
                  public void onComplete() {
                      streamCompleted.complete(true);
  
                  }
  
              });
          } , streamCompleted);
      }