code: public void readRowsAsync(Query query, ResponseObserver<Row> observer) {
      readRowsCallable().call(query, observer);
    }
docs: Convenience method for asynchronously streaming the results of a {@link Query}.
  
  <p>Sample code:
  
  <pre>{@code
  try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
  String tableId = "[TABLE]";
  
  Query query = Query.create(tableId)
  .range("[START KEY]", "[END KEY]")
  .filter(FILTERS.qualifier().regex("[COLUMN PREFIX].*"));
  
  bigtableDataClient.readRowsAsync(query, new ResponseObserver<Row>() {
  public void onStart(StreamController controller) { }
  public void onResponse(Row row) {
  // Do something with Row
  }
  public void onError(Throwable t) {
  if (t instanceof NotFoundException) {
  System.out.println("Tried to read a non-existent table");
  } else {
  t.printStackTrace();
  }
  }
  public void onComplete() {
  // Handle stream completion
  }
  });
  }
  }</pre>