code: public static <T, R1, R> Mono<R> forEach(Mono<? extends T> value1,
                                               Function<? super T, Mono<R1>> value2,
                                               BiFunction<? super T, ? super R1, ? extends R> yieldingFunction) {
  
          Future<R> res = Future.fromPublisher(value1).flatMap(in -> {
  
              Future<R1> a = Future.fromPublisher(value2.apply(in));
              return a.map(ina -> yieldingFunction.apply(in, ina));
  
  
          });
  
  
          return Mono.from(res);
  
      }
docs: Perform a For Comprehension over a Mono, accepting a generating function.
  This results in a two level nested internal iteration over the provided Monos.
  
  <pre>
  {@code
  
  import static cyclops.companion.reactor.Monos.forEach;
  
  forEach(Mono.just(1),
  a-> Mono.just(a+1),
  Tuple::tuple)
  
  }
  </pre>
  
  @param value1 top level Mono
  @param value2 Nested Mono
  @param yieldingFunction Generates a result per combination
  @return Mono with a combined value generated by the yielding function