'A generator of multiplexed data blocks read from a buffered
response.'

def _multiplexed_buffer_helper(self, response):

    buf = self._result(response, binary=True)
    buf_length = len(buf)
    walker = 0
    while True:
        if ((buf_length - walker) < STREAM_HEADER_SIZE_BYTES):
            break
        header = buf[walker:(walker + STREAM_HEADER_SIZE_BYTES)]
        (_, length) = struct.unpack_from('>BxxxL', header)
        start = (walker + STREAM_HEADER_SIZE_BYTES)
        end = (start + length)
        walker = end
        (yield buf[start:end])
