public Connection next(String method) throws IOException {
  for (Connection pooled; (pooled=pool.get(address)) != null; ) {
    if (method.equals("GET") || pooled.isReadable())     return pooled;
    pooled.close();
  }
  if (!hasNextTlsMode()) {
    if (!hasNextInetSocketAddress()) {
      if (!hasNextProxy()) {
        if (!hasNextPostponed()) {
          throw new NoSuchElementException();
        }
        return new Connection(nextPostponed());
      }
      lastProxy=nextProxy();
      resetNextInetSocketAddress(lastProxy);
    }
    lastInetSocketAddress=nextInetSocketAddress();
    resetNextTlsMode();
  }
  boolean modernTls=nextTlsMode() == TLS_MODE_MODERN;
  Route route=new Route(address,lastProxy,lastInetSocketAddress,modernTls);
  if (routeDatabase.shouldPostpone(route)) {
    postponedRoutes.add(route);
    return next(method);
  }
  return new Connection(route);
}

public Connection next ( String method ) throws IOException { for ( Connection pooled ; ( pooled = pool . get ( address ) ) != null ; ) { if ( method . equals ( "GET" ) || pooled . isReadable ( ) ) return pooled ; pooled . close ( ) ; } if ( ! hasNextTlsMode ( ) ) { if ( ! hasNextInetSocketAddress ( ) ) { if ( ! hasNextProxy ( ) ) { if ( ! hasNextPostponed ( ) ) { throw new NoSuchElementException ( ) ; } return new Connection ( nextPostponed ( ) ) ; } lastProxy = nextProxy ( ) ; resetNextInetSocketAddress ( lastProxy ) ; } lastInetSocketAddress = nextInetSocketAddress ( ) ; resetNextTlsMode ( ) ; } boolean modernTls = nextTlsMode ( ) == TLS_MODE_MODERN ; Route route = new Route ( address , lastProxy , lastInetSocketAddress , modernTls ) ; if ( routeDatabase . shouldPostpone ( route ) ) { postponedRoutes . add ( route ) ; return next ( method ) ; } return new Connection ( route ) ; }
returns the next route address to attempt .
