anchor.diff:  
       AsyncSession session = driver.asyncSession();
       return session
  -        .writeTransactionAsync(tx ->
  -            tx.runAsync("MATCH (f:Fruit) WHERE id(f) = $id DELETE f", Values.parameters("id", id))
  +        .writeTransactionAsync(tx -> tx
  +            .runAsync("MATCH (f:Fruit) WHERE id(f) = $id DELETE f", Values.parameters("id", id))
  +            .thenCompose(fn -> fn.consumeAsync()) // <1>
           )
  -        .thenCompose(fn -> fn.consumeAsync()) // <1>
           .thenCompose(response -> session.closeAsync())
           .thenApply(signal -> Response.noContent().build());
   }
  
positive.code: with online backup and high availability extensions licensed under a closed-source commercial license.
  
  include::./status-include.adoc[]
  
  [WARNING]
  ====
  It is based on an alpha version of the Neo4j driver.
  Hence the reason for it to be _preview_
  ====
  
  == Programming model
  
  
negative.code: public CompletionStage<Response> getSingle(@PathParam("id") Long id) {
      AsyncSession session = driver.asyncSession();
      return session
          .readTransactionAsync(tx -> tx
              .runAsync("MATCH (f:Fruit) WHERE id(f) = $id RETURN f", Values.parameters("id", id))
              .thenCompose(fn -> fn.singleAsync())
      )
      .handle((record, exception) -> {
          if(exception != null) {
              Throwable source = exception;
  