private void doOnDisconnected(CometClientTransportWrapper transport) {
    if (refreshState != null) {
      if (transport == primaryTransport) {
        if (refreshState != RefreshState.CONNECTING) {
          throw new IllegalStateException("Unexpected refreshState");
        }
        refreshState = RefreshState.PRIMARY_DISCONNECTED;
        GWT.log("CometClient: primary disconnected before refresh transport was connected");
      } else {
        // the refresh transport has disconnected
        failedRefresh();
      }
    } else {
      listener.onDisconnected();

      if (running) {
        doConnect();
      }
    }
  }