docs: public boolean performAsyncButOrdered(K key, Runnable runnable) {
          Queue<Runnable> keyQueue;
          synchronized (pendingRunnables) {
              keyQueue = pendingRunnables.get(key);
              if (keyQueue == null) {
                  keyQueue = new ConcurrentLinkedQueue<>();
                  pendingRunnables.put(key, keyQueue);
              }
          }
  
          keyQueue.add(runnable);
  
          boolean newHandler;
          synchronized (threadActiveMap) {
              Boolean threadActive = threadActiveMap.get(key);
              if (threadActive == null) {
                  threadActive = false;
                  threadActiveMap.put(key, threadActive);
              }
  
              newHandler = !threadActive;
              if (newHandler) {
                  Handler handler = new Handler(keyQueue, key);
                  threadActiveMap.put(key, true);
                  if (executor == null) {
                      AbstractXMPPConnection.asyncGo(handler);
                  } else {
                      executor.execute(handler);
                  }
              }
          }
  
          return newHandler;
      }