code: def register_iq_response_future(self, from_, id_, fut):
          
  
          self._iq_response_map.add_listener(
              (from_, id_),
              StanzaErrorAwareListener(
                  callbacks.FutureListener(fut)
              )
          )
          self._logger.debug("iq response future registered: from=%r, id=%r",
                             from_, id_)
docs: Register a future `fut` for an IQ stanza with type ``result`` or
          ``error`` from the :class:`~aioxmpp.JID` `from_` with the id
          `id_`.
  
          If the type of the IQ stanza is ``result``, the stanza is set as result
          to the future. If the type of the IQ stanza is ``error``, the stanzas
          error field is converted to an exception and set as the exception of
          the future.
  
          The future might also receive different exceptions:
  
          * :class:`.errors.ErroneousStanza`, if the response stanza received
            could not be parsed.
  
            Note that this exception is not emitted if the ``from`` address of
            the stanza is unset, because the code cannot determine whether a
            sender deliberately used an erroneous address to make parsing fail
            or no sender address was used. In the former case, an attacker could
            use that to inject a stanza which would be taken as a stanza from the
            peer server. Thus, the future will never be fulfilled in these
            cases.
  
            Also note that this exception does not derive from
            :class:`.errors.XMPPError`, as it cannot provide the same
            attributes. Instead, it dervies from :class:`.errors.StanzaError`,
            from which :class:`.errors.XMPPError` also derives; to catch all
            possible stanza errors, catching :class:`.errors.StanzaError` is
            sufficient and future-proof.
  
          * :class:`ConnectionError` if the stream is :meth:`stop`\\ -ped (only
            if SM is not enabled) or :meth:`close`\\ -ed.
  
          * Any :class:`Exception` which may be raised from
            :meth:`~.protocol.XMLStream.send_xso`, which are generally also
            :class:`ConnectionError` or at least :class:`OSError` subclasses.