code: protected void dispatch() {
      // Event Based ----------------------------------------------------------
      if (isEventBased()) {
        // Current State: IDLE
        // Event: Request in storage
        // Action: Send stored request
        // New State: PENDING_B
        Request buffer = this.sessionData.getBuffer();
        if (buffer != null) {
          setState(ClientCCASessionState.PENDING_BUFFERED);
          try {
            dispatchEvent(new AppRequestEventImpl(buffer));
          }
          catch (Exception e) {
            try {
              handleSendFailure(e, Event.Type.SEND_EVENT_REQUEST, buffer);
            }
            catch (Exception e1) {
              logger.error("Failure handling buffer send failure", e1);
            }
          }
        }
      }
      // Session Based --------------------------------------------------------
      else {
        if (this.sessionData.getClientCCASessionState() == ClientCCASessionState.OPEN && eventQueue.size() > 0) {
          try {
            this.handleEvent(eventQueue.remove(0));
          }
          catch (Exception e) {
            logger.error("Failure handling queued event", e);
          }
        }
      }
    }
docs: This makes checks on queue, moves it to proper state if event there is
  present on Open state ;]