code: @Override
      public void close() {
          if (transactionState == TransactionState.IN) {
              abortTransaction(new SingleResultCallback<Void>() {
                  @Override
                  public void onResult(final Void result, final Throwable t) {
                      ClientSessionImpl.super.close();
                  }
              });
          } else {
              super.close();
          }
      }
docs: TODO: should there be a version of this that takes a callback?