title: How do I wait for multiple Mono's to complete at once and get the value
body: <p>Similar in question to <a href="https://stackoverflow.com/questions/49396692/waiting-for-running-reactor-mono-instances-to-complete">Waiting for running Reactor Mono instances to complete</a> but I want to get the result ideally in another Mono.  Here's the code I have.  I tried the materialize solution but that didn't pan out.</p>
  
  <pre><code>    @GetMapping("/bounced")
      public Mono&lt;Map&lt;String, Object&gt;&gt; bounced(
          @RequestHeader("X-B3-Traceid") String traceId,
          @RequestHeader(HttpHeaders.AUTHORIZATION) String authorization
      ) {
  
          final Mono&lt;Map&lt;String, Object&gt;&gt; sample = webClient.get()
              .uri("http://sample:8080/")
              .header(HttpHeaders.AUTHORIZATION, authorization)
              .retrieve()
              .bodyToMono(new ParameterizedTypeReference&lt;&gt;() {
              });
  
          final Mono&lt;Map&lt;String, Object&gt;&gt; httpGet = webClient.get()
              .uri("http://httpbin.org/get")
              .retrieve()
              .bodyToMono(new ParameterizedTypeReference&lt;&gt;() {
              });
  
          final Mono&lt;Map&lt;String, Object&gt;&gt; anything = webClient.get()
              .uri("http://httpbin.org/anything/foo")
              .retrieve()
              .bodyToMono(new ParameterizedTypeReference&lt;&gt;() {
              });
  
  /*
     Tried this and it does start it up, but it triggers another "download" in the return block.
  
          Mono.when(anything, sample, httpGet)
              .subscribe();
              .materialize()
              .block();
  */
          return Mono.just(Map.of("traceFromBounced", traceId,
              "anything", anything.block(),
              "sample", sample.block(),
              "httpGet", httpGet.block()));
  </code></pre>