title: Handling ListenableFuture in Project reactor
body: <p>I've started playing with project reactor and wanted to move one of our API to reactive way of doing things. I was wondering what is right away of handling things like ListenableFuture. </p>
  
  <p>In my case, I'm using Cassandra and when I call <code>session.executeAsync()</code> this returns back a ResultSetFuture which extends ListenableFuture.
  Below is the example of what I have coded for now and I don't seem to be happy with exposing ListenableFuture to clients.</p>
  
  <pre class="lang-java prettyprint-override"><code>public Mono&lt;ListenableFuture&lt;Void&gt;&gt; save(Publisher&lt;AccountDTO&gt; accountPublisher) {
      return Mono.just(accountPublisher)
              .map(accountDTO -&gt; {
                  Account accountEntity = modelMapper.map(accountDTO, Account.class);
                  return mappingManager.mapper(Account.class).saveAsync(accountEntity);
              })
              .retry(1)
              .doOnError(throwable -&gt; log.error("Unable to create account "))
              .mapError(throwable -&gt; new MyCustomException(""));
  }
  </code></pre>
  
  <p>My question is: </p>
  
  <blockquote>
    <p>Is it a good practice to expose ListenableFuture, I personally don't want to give anything like this back to the client where they can block. Is there a better way to handle this in project reactor where I can just return a Mono?</p>
  </blockquote>