'A generator of multiplexed data blocks coming from a response
stream.'

def _multiplexed_response_stream_helper(self, response):

    socket = self._get_raw_response_socket(response)
    self._disable_socket_timeout(socket)
    while True:
        header = response.raw.read(STREAM_HEADER_SIZE_BYTES)
        if (not header):
            break
        (_, length) = struct.unpack('>BxxxL', header)
        if (not length):
            continue
        data = response.raw.read(length)
        if (not data):
            break
        (yield data)
