docs: private void subscribeToNewNode() {
          //Technically necessary to synchronize for safe publication of this store
          NodeConnection cxn = null;
          synchronized (Distributer.this) {
              m_subscribedConnection = null;
              if (!m_connections.isEmpty()) {
                  cxn = m_connections.get(new Random().nextInt(m_connections.size()));
                  m_subscriptionRequestPending = true;
                  m_subscribedConnection = cxn;
              } else {
                  return;
              }
          }
          try {
  
              //Subscribe to topology updates before retrieving the current topo
              //so there isn't potential for lost updates
              ProcedureInvocation spi = new ProcedureInvocation(m_sysHandle.getAndDecrement(), "@Subscribe", "TOPOLOGY");
              cxn.createWork(System.nanoTime(),
                      spi.getHandle(),
                      spi.getProcName(),
                      serializeSPI(spi),
                      new SubscribeCallback(),
                      true,
                      USE_DEFAULT_CLIENT_TIMEOUT);
  
              spi = new ProcedureInvocation(m_sysHandle.getAndDecrement(), "@Statistics", "TOPO", 0);
              //The handle is specific to topology updates and has special cased handling
              cxn.createWork(System.nanoTime(),
                      spi.getHandle(),
                      spi.getProcName(),
                      serializeSPI(spi),
                      new TopoUpdateCallback(),
                      true,
                      USE_DEFAULT_CLIENT_TIMEOUT);
  
              //Don't need to retrieve procedure updates every time we do a new subscription
              //since catalog changes aren't correlated with node failure the same way topo is
              if (!m_fetchedCatalog) {
                  spi = new ProcedureInvocation(m_sysHandle.getAndDecrement(), "@SystemCatalog", "PROCEDURES");
                  //The handle is specific to procedure updates and has special cased handling
                  cxn.createWork(System.nanoTime(),
                          spi.getHandle(),
                          spi.getProcName(),
                          serializeSPI(spi),
                          new ProcUpdateCallback(),
                          true,
                          USE_DEFAULT_CLIENT_TIMEOUT);
              }
  
              //Partition key update
              refreshPartitionKeys(true);
          } catch (Exception e) {
              e.printStackTrace();
          }
      }