code: private void actuallyReconnect() {
          if (((null == signalingChannel) || !signalingChannel.connected) && reconnect) {
              if (connectionInProgress) {
                  // The client app must have initiated a connection manually during the timeout period. Try again later
                  performReconnect();
              } else {
                  Log.d(TAG, "Trying to reconnect...");
                  connect(localEndpointID, applicationID, reconnect, presence, appContext, new ConnectCompletionListener() {
                      @Override
                      public void onError(final String errorMessage) {
                          // A REST API call failed. Socket errors are handled in the onError callback
                          new Handler(Looper.getMainLooper()).post(new Runnable() {
                              @Override
                              public void run() {
                                  Listener listener = listenerReference.get();
                                  if (null != listener) {
                                      listener.onError(RespokeClient.this, errorMessage);
                                  }
                              }
                          });
  
                          // Try again later
                          performReconnect();
                      }
                  });
              }
          }
      }
docs: Attempt to reconnect the client if it is not already trying in another thread