def read_frame_nowait(self) -> Optional[DataFrame]:
try:<EOL><INDENT>frame = self._data_frames.get_nowait()<EOL><DEDENT>except asyncio.QueueEmpty:<EOL><INDENT>if self.closed:<EOL><INDENT>raise StreamConsumedError(self.id)<EOL><DEDENT>return None<EOL><DEDENT>self._data_frames.task_done()<EOL>if frame is None:<EOL><INDENT>raise StreamConsumedError(self.id)<EOL><DEDENT>return frame<EOL>
Read a single frame from the local buffer immediately.

        If no frames are available but the stream is still open, returns None.
        Otherwise, raises StreamConsumedError.