src/main/java/org/jivesoftware/whack/ExternalComponent.java
void addIQResultListener(String id, IQResultListener listener,
            long timeoutmillis) {
        // be generated by the server and simulate like the client sent it. This
        // will let listeners
        // react and be removed from the collection
        resultListeners.put(id, listener);
        resultTimeout.put(id, System.currentTimeMillis() + timeoutmillis);
    }
void addIQResultListener(String id, IQResultListener listener,
            long timeoutmillis) {
        // be generated by the server and simulate like the client sent it. This
        // will let listeners
        // react and be removed from the collection
        resultListeners.put(id, listener);
        resultTimeout.put(id, System.currentTimeMillis() + timeoutmillis);
    }
Adds an {@link IQResultListener} that will be invoked when an IQ result
is sent to the server itself and is of type result or error. This is a
nice way for the server to send IQ packets to other XMPP entities and be
waked up when a response is received back.
<p>

Once an IQ result was received, the listener will be invoked and removed
from the list of listeners.

@param id
the id of the IQ packet being sent from the server to an XMPP
entity.
@param listener
the IQResultListener that will be invoked when an answer is
received
@param timeoutmillis
The amount of milliseconds after which waiting for a response
should be stopped.