docs: def can_read(self, timeout=0):
          """
          Return True if data is ready to be read from the socket,
          otherwise False.
  
          This doesn't guarentee that the socket is still connected, just that
          there is data to read.
  
          Automatically retries EINTR errors based on PEP 475.
          """
          while True:
              try:
                  return self.check_can_read(timeout)
              except (select.error, IOError) as ex:
                  if self.errno_from_exception(ex) == errno.EINTR:
                      continue
                  return False