<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)