code: @NotNull
  	public static Promise<Void> all(@NotNull Iterator<? extends Promise<?>> promises) {
  		if (!promises.hasNext()) return all();
  		@NotNull PromiseAll<Object> resultPromise = new PromiseAll<>();
  		while (promises.hasNext()) {
  			Promise<?> promise = promises.next();
  			if (promise.isResult()) continue;
  			if (promise.isException()) return Promise.ofException(promise.materialize().getException());
  			resultPromise.countdown++;
  			promise.next(resultPromise);
  		}
  		return resultPromise.countdown != 0 ? resultPromise : Promise.complete();
  	}
docs: Returns {@code Promise} that completes when all of the {@code promises}
  are completed. If at least one of the {@code promises} completes
  exceptionally, a {@link CompleteExceptionallyPromise} will be returned.