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.

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