code: def unregister_iq_request_handler(self, type_, payload_cls):
          
          type_ = self._coerce_enum(type_, structs.IQType)
          del self._iq_request_map[type_, payload_cls]
          self._logger.debug(
              "iq request coroutine unregistered: type=%r, payload=%r",
              type_, payload_cls)
docs: Unregister a coroutine previously registered with
          :meth:`register_iq_request_handler`.
  
          :param type_: IQ type to react to (must be a request type).
          :type type_: :class:`~structs.IQType`
          :param payload_cls: Payload class to react to (subclass of
              :class:`~xso.XSO`)
          :type payload_cls: :class:`~.XMLStreamClass`
          :raises KeyError: if no coroutine has been registered for the given
                            ``(type_, payload_cls)`` pair
          :raises ValueError: if `type_` is not a valid
                              :class:`~.IQType` (and cannot be cast to a
                              :class:`~.IQType`)
  
          The match is solely made using the `type_` and `payload_cls` arguments,
          which have the same meaning as in :meth:`register_iq_request_coro`.
  
          .. versionchanged:: 0.10
  
              Renamed from :meth:`unregister_iq_request_coro`.
  
          .. versionchanged:: 0.7
  
             The `type_` argument is now supposed to be a :class:`~.IQType`
             member.
  
          .. deprecated:: 0.7
  
             Passing a :class:`str` as `type_` argument is deprecated and will
             raise a :class:`TypeError` as of the 1.0 release. See the Changelog
             for :ref:`api-changelog-0.7` for further details on how to upgrade
             your code efficiently.