def __wait_for_one_server_connection(self):
        """Wait until at least one server is connected. Since quitting relies 
        on a bunch of loops terminating, attempting to quit [cleanly] 
        immediately will still have to wait for the connections to finish 
        starting.
        """

        _logger.info("Waiting for first connection.")

        while 1:
            is_connected_to_one = False
            for (n, c, g) in self.__connections:
                if c.is_connected is True:
                    is_connected_to_one = True
                    break
                elif g.exception == nsq.exceptions.NsqConnectGiveUpError:
                    raise IOError("One of the servers could not be connected "
                                  "during startup: [%s]" % (c))
                elif g.exception is not None:
                    raise IOError("One of the connection gthreads had an "
                                  "uncaught exception during startup: [%s] "
                                  "[%s]" % 
                                  (g.exception.__class__.__name__, 
                                   str(g.exception)))
                elif g.dead is True:
                    raise SystemError("One of the connection gthreads died "
                                      "during startup: [%s]" % (c,))

            if is_connected_to_one is True:
                break

            gevent.sleep(nsq.config.client.CONNECT_AUDIT_WAIT_INTERVAL_S)