title: when would webClient be called in webflux
body: <p>Reactor http operation is said to be cold, only run when subscribe or block is called. While in practice, it is said that when the mapped (or flatMapped, the value to the right of <code>-&gt;</code>) result is needed (or consumed), it would be called. Then I noticed that <code>log.info("{}", resultOfMap)</code> is not enough for its being called, but <code>function return from resultOfMap</code> is enough. Is there a logical reason for this, like <em>"what is the difference between log consumer and function return consumer from perspective of reactor"</em>, or are we playing <em>"hide-and-seek-and-eureka"</em></p>
  
  <pre><code>public Mono&lt;ServerResponse&gt; postMethod(ServerRequest req) {
       req.bodyToMono(T.class)
              .map(t -&gt; fromTtoD(t))
              .flatMap(d -&gt;
                  this.webClient
                      .post()
                      .uri(serverUri)
                      .body(BodyInserters.fromObject(d))
                      .retrieve()
                      .bodyToMono(E.class))
              .map(e -&gt; log e and return e); // no! this would not make webClient called.
              .flatMap(e -&gt; ServerResponse.ok().bodyValue(e).build()) // yes! when return this 
  }
  </code></pre>