title: Cache.getOrElse on Futures in Playframework
body: <p>What is the correct way to cache the result of future in playframework. E.g.:</p>
  
  <pre><code>val userGravatar: Future[JsValue] = RemoteGravatarService.get(user.id, user.email)
  
  object RemoveGravatarService {
    def get(userId: String, email: String): Future[JsValue] = {
      Cache.getOrElse("gravatar-for-$userId", 1.hour) {
        WS.url("gravatar.com/email=$email").get().asJson
      }
    }
  }
  </code></pre>
  
  <p>We don't want to ask (this fictional) "Gravatar" every time, because it doesn't change <em>that</em> often. But we need som userGravatar info quite often locally.</p>
  
  <p>Here we cache the future itself, but actually we only want to cache the result of the future. Is there a convenient/correct way to do this in play?</p>