code: protected void dispatch() {
      // Event Based ----------------------------------------------------------
      if (isEventBased()) {
        // Current State: IDLE
        // Event: Request in storage
        // Action: Send stored request
        // New State: PENDING_B
        if (buffer != null) {
          setState(ClientRxSessionState.PENDING_BUFFERED);
          try {
            dispatchEvent(new AppRequestEventImpl(messageFromBuffer(ByteBuffer.wrap(buffer))));
          }
          catch (Exception e) {
            try {
              handleSendFailure(e, Event.Type.SEND_EVENT_REQUEST, messageFromBuffer(ByteBuffer.wrap(buffer)));
            }
            catch (Exception e1) {
              logger.error("Failure handling buffer send failure", e1);
            }
          }
        }
      } // Session Based --------------------------------------------------------
      else {
        if (sessionData.getClientRxSessionState() == ClientRxSessionState.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 ;]