docs: public Future<ClientResponse> executeAsync(String procedure, Object... parameters)
              throws NoConnectionsException, IOException
      {
          ClientImpl currentClient = this.getClient();
          final JDBC4ExecutionFuture future = new JDBC4ExecutionFuture(this.defaultAsyncTimeout);
          try {
              currentClient.callProcedure(new TrackingCallback(this, procedure, new ProcedureCallback() {
                  @SuppressWarnings("unused")
                  final JDBC4ExecutionFuture result;
                  {
                      this.result = future;
                  }
  
                  @Override
                  public void clientCallback(ClientResponse response) throws Exception {
                      future.set(response);
                  }
              }), procedure, parameters);
          }
          catch (NoConnectionsException e) {
              this.dropClient(currentClient);
              throw e;
          }
          return future;
      }