docs: def read(self, n=4096):
          """
          Return `n` bytes of data from the Stream, or None at end of stream.
          """
  
          while True:
              try:
                  if hasattr(self.fd, 'recv'):
                      return self.fd.recv(n)
                  return os.read(self.fd.fileno(), n)
              except EnvironmentError as e:
                  if e.errno not in Stream.ERRNO_RECOVERABLE:
                      raise e