Unregister a previously registered descriptor

        :param fd:
            The descriptor to unregister
        :raises ValueError:
            If :meth:`closed()` is True
        :raises OSError:
            If the underlying ``epoll_ctl(2)`` fails. The error message matches
            those found in the manual page.

        .. note::
            For feature parity with Python 3.4, unlike what ``epoll_ctl(2)``
            would do, we are silently ignoring ``EBADF`` which is raised if

def unregister(self, fd):
        """
        Unregister a previously registered descriptor

        :param fd:
            The descriptor to unregister
        :raises ValueError:
            If :meth:`closed()` is True
        :raises OSError:
            If the underlying ``epoll_ctl(2)`` fails. The error message matches
            those found in the manual page.

        .. note::
            For feature parity with Python 3.4, unlike what ``epoll_ctl(2)``
            would do, we are silently ignoring ``EBADF`` which is raised if
        """
        if self._epfd < 0:
            _err_closed()
        ev = epoll_event()
        try:
            epoll_ctl(self._epfd, EPOLL_CTL_DEL, fd, byref(ev))
        except OSError as exc:
            # Allow fd to be closed, matching Python 3.4
            if exc.errno != EBADF:
                raise