because anonymous pipes in windows can be blocked, we need to pay attention
        on how much we read

def _handle_readable(self, f):
        """ because anonymous pipes in windows can be blocked, we need to pay attention
        on how much we read
        """
        count = -1
        if isinstance(f, tuple):
            f, count = f
        handler = self._reads.pop(f, None)
        if handler is not None:
            handler(self, f, count=count)