code: def next_server
        if @retry_period
          rebuild_live_server_list! if Time.now > @last_rebuild + @retry_period
          raise NoServersAvailable, "No live servers in #{@servers.inspect} since #{@last_rebuild.inspect}." if @live_server_list.empty?
        elsif @live_server_list.empty?
          rebuild_live_server_list!
        end
        @live_server_list.shift
      end
docs: TODO this can spin indefinitely if timeout > retry_period