def _remove_handler(self, handler):
        """
        Remove a handler. Ignores handlers that are not present.
        """
        stash = None
        if isinstance(handler, tuple):
            handler, stash = handler

        try:
            delattr(stash, '_sh_{}'.format(id(handler)))
        except AttributeError:
            pass

        wr = get_weak_reference(handler)
        delenda = [h for h in self._handlers if h == wr]
        self._handlers = self._handlers.difference(set(delenda))
        return self