anchor.diff:  public CompletionStage<Response> create(Fruit fruit) {
       AsyncSession session = driver.asyncSession();
       return session
  -        .writeTransactionAsync(tx ->
  -            tx.runAsync("CREATE (f:Fruit {name: $name}) RETURN f", Values.parameters("name", fruit.name))
  +        .writeTransactionAsync(tx -> tx
  +            .runAsync("CREATE (f:Fruit {name: $name}) RETURN f", Values.parameters("name", fruit.name))
  +            .thenCompose(fn -> fn.singleAsync())
           )
  -        .thenCompose(fn -> fn.singleAsync())
           .thenApply(record -> Fruit.from(record.get("f").asNode()))
           .thenCompose(persistedFruit -> session.closeAsync().thenApply(signal -> persistedFruit))
           .thenApply(persistedFruit -> Response
  
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: 
      AsyncSession session = driver.asyncSession();
      return session
          .writeTransactionAsync(tx -> tx
              .runAsync("MATCH (f:Fruit) WHERE id(f) = $id DELETE f", Values.parameters("id", id))
              .thenCompose(fn -> fn.consumeAsync()) // <1>
          )
          .thenCompose(response -> session.closeAsync())
          .thenApply(signal -> Response.noContent().build());
  }
  