code: public final Mono<T> reduce(BiFunction<T, T, T> aggregator) {
  		if (this instanceof Callable){
  			@SuppressWarnings("unchecked")
  			Callable<T> thiz = (Callable<T>)this;
  		    return convertToMono(thiz);
  		}
  	    return Mono.onAssembly(new MonoReduce<>(this, aggregator));
  	}
docs: Reduce the values from this {@link Flux} sequence into a single object of the same
  type than the emitted items. Reduction is performed using a {@link BiFunction} that
  takes the intermediate result of the reduction and the current value and returns
  the next intermediate value of the reduction. Note, {@link BiFunction} will not
  be invoked for a sequence with 0 or 1 elements. In case of one element's
  sequence, the result will be directly sent to the subscriber.
  
  <p>
  <img class="marble" src="doc-files/marbles/reduceWithSameReturnType.svg" alt="">
  
  @reactor.discard This operator discards the internally accumulated value upon cancellation or error.
  
  @param aggregator the reducing {@link BiFunction}
  
  @return a reduced {@link Flux}