code: protected final void notifyListeners() {
          Iterator<SMTPClientFutureListener<E>> it = null;
          synchronized (this) {
              if (listeners != null) {
                  // notify the listeners
                  it  = listeners.iterator();
  
                  listeners = null;
              }
          }
          if (it != null) {
              while(it.hasNext()) {
                  SMTPClientFutureListener<E> listener = null;
                  try {
                      listener = it.next();
                      listener.operationComplete(this);
                  } catch (Throwable e) {
                      LOGGER.warn("Exception thrown while executing " + SMTPClientFutureListener.class.getName() + " " + listener, e);
                  }
              }
          }
      }
docs: Notify all registered {@link SMTPClientFutureListener}'s