'Generates records one a time from a page, stopping at prescribed limits.
:param Page page: The page to stream.
:param int limit: The max number of records to read.
:param int page_imit: The max number of pages to read.'

def stream(self, page, limit=None, page_limit=None):

    current_record = 1
    current_page = 1
    while (page is not None):
        for record in page:
            (yield record)
            current_record += 1
            if (limit and (limit is not values.unset) and (limit < current_record)):
                return
        if (page_limit and (page_limit is not values.unset) and (page_limit < current_page)):
            return
        page = page.next_page()
        current_page += 1
