code: async def read_frame(self, stream_id: int) -> bytes:
          
          stream = self._get_stream(stream_id)
          frame = await stream.read_frame()
          if frame.flow_controlled_length > 0:
              self._acknowledge_data(frame.flow_controlled_length, stream_id)
          return frame.data
docs: Read a single frame of data from the specified stream, waiting until
          frames are available if none are present in the local buffer. If the
          stream is closed and all buffered frames have been consumed, raises a
          StreamConsumedError.