Read data from the specified stream until it is closed by the remote
        peer. If the stream is never ended, this never returns.

async def read_data(self, stream_id: int) -> bytes:
        """Read data from the specified stream until it is closed by the remote
        peer. If the stream is never ended, this never returns.
        """
        frames = [f async for f in self.stream_frames(stream_id)]
        return b''.join(frames)