public Cancellable queryAsynchronously(final String cql, final Runnable listener, final QueryOptions options,
final Executor executor) {
return execute(new SessionCallback<Cancellable>() {
@Override
public Cancellable doInSession(Session s) throws DataAccessException {
Statement statement = new SimpleStatement(cql);
addQueryOptions(statement, options);
ResultSetFuture rsf = s.executeAsync(statement);
rsf.addListener(listener, executor);
return new ResultSetFutureCancellable(rsf);
}