'Returns a cursor that points just after the last result returned.
If next() throws an exception, this function returns the end_cursor from
the last successful batch or throws the same exception if no batch was
successful.'

def cursor(self):

    return (self.__last_cursor or self._ensure_current_batch().cursor(self.__current_pos))
