code: @SuppressWarnings("unchecked")
  	@Contract(pure = true)
  	@NotNull
  	public static <T> Promise<List<T>> some(@NotNull Iterator<? extends Promise<? extends T>> promises, int number) {
  		if (number == 0) return (Promise<List<T>>) some(number);
  		if (!promises.hasNext()) return (Promise<List<T>>) some(number);
  
  		PromiseSome<T> resultPromise = new PromiseSome<>(number);
  		someImpl(resultPromise, promises, number);
  		return resultPromise.isEnoughForTheResult() ? resultPromise : (Promise<List<T>>) some(number);
  	}
docs: Returns {@see Promise} which will have the array of first complete {@see Promise},
  the size of array will be the {@param number} if there will be passed the appropriate
  amount of {@param promises}. In case the lower amount {@param promises} then {@param number} of
  the return array will consist of the same {@param promises} which will be complete.
  <p>
  Provided the number is less or equal '0', the result will be the {@see Promise}
  and result of it is {@see CompleteExceptionallyPromise}
  <p>
  The result in the same order isn`t guaranteed
  
  @param number - amount first complete {@see Promise}
  @return {@see Promise} which has the array of values from completed {@param promises}