docs: private NetworkConnection connectOverNetwork(JFapAddressHolder addressHolder, NetworkConnectionFactoryHolder factoryHolder) throws JFapConnectFailedException, FrameworkException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "connectOverNetwork", new Object[] { addressHolder, factoryHolder });
  
          NetworkConnectionFactory vcf = factoryHolder.getFactory();
          NetworkConnection vc = vcf.createConnection();
          Semaphore sem = new Semaphore();
          ClientConnectionReadyCallback callback = new ClientConnectionReadyCallback(sem);
  
          vc.connectAsynch(addressHolder.getAddress(), callback);
          sem.waitOnIgnoringInterruptions();
  
          if (!callback.connectionSucceeded())
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, "Connect has failed due to ", callback.getException());
  
              String failureKey;
              Object[] failureInserts;
              if (addressHolder.getAddress() != null)
              {
                  failureKey = "CONNDATAGROUP_CONNFAILED_SICJ0063";
                  failureInserts = addressHolder.getErrorInserts();
              }
              else
              {
                  failureKey = "CONNDATAGROUP_CONNFAILED_SICJ0080";
                  failureInserts = new Object[] {};
              }
  
              String message = nls.getFormattedMessage(failureKey, failureInserts, failureKey);
  
              throw new JFapConnectFailedException(message, callback.getException());
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "connectOverNetwork", vc);
          return vc;
      }