title: Lazily evaluated switchIfEmpty for Project Reactor's Mono
body: <p>I'm looking for a way to retrieve an alternative Mono in case the original one is empty. The closest one I found is <code>Mono.switchIfEmpty</code>, but my problem with it is that I can't pass a lambda expression to it so it's being called even when the Mono has a non-empty value. This is sort of like <code>Optional.orElse</code> vs <code>Optional.orElseGet</code>.</p>
  
  <p>Here is a sample:</p>
  
  <pre><code>return someService.findSomeElements()           // returns a Flux&lt;Element&gt;
                    .filter(this::checkIfMatches)
                    .singleOrEmpty()
                    .switchIfEmpty(...);          // &lt;-- I want to use lambda here 
  </code></pre>