title: Parameter of Optional.orElse gets called even when Optional contains value
body: <p>The below code prints:</p>
  
  <pre class="lang-none prettyprint-override"><code>should Not have called
  hello world
  </code></pre>
  
  <p>Why is <code>orElse</code> getting executed even when we have an Optional that contains a value?</p>
  
  <pre><code>public static void main(String[] args){
      String o = Optional.ofNullable("world").map(str -&gt; "hello" + str).orElse(dontCallMe());
      System.out.println(o);
  }
  
  private static String dontCallMe() {
      System.out.println("should Not have called");
      return "why god why";
  }
  </code></pre>