public void query(final QueryBuilder query, final QueryCallback<T> callback) {
execute(new DBConversation<Void>() {
@Override
public Void execute(Connection connection) {
QueryResponse<T> response = connection.execute(new QueryRequest<T>(dbName(), new QueryOptionsBuilder(), query, queryCoders, defaultEncoder()));
// TODO Check response.responseFlag for errors
boolean readMore = response.readResponse(callback);
long cursorId = response.cursorId();
try {
if (cursorId != 0 && readMore) {