                 winston.debug("created #{i} connections so far")
             misc.retry_until_success
                 f : @_connect
+                start_delay : 5000
+                max_delay   : 30000
                 cb : cb
         # first connect once (to get topology), then many more times in parallel
         g 0, () =>

                                            if err
                                                cb(err)
                                            else
                                                @table('projects').getAll(opts.account_id, index:'users').pluck('users').changes(includeStates: false, squash:3).run((err, feed) => killfeed = feed; cb(err))
                                    else
                                        cb()
                    else if x == "collaborators"

                cb(err)

    _update_pool: (cb) =>
        if @_update_pool_cbs?
            @_update_pool_cbs.push(cb)
            return

        @dbg("_update_pool")()
        @_update_pool_cbs = [cb]

        # 1. remove any connections from the pool that aren't opened
        for id, conn of @_conn
            if not conn.isOpen()
                delete @_conn[id]

        # 2. ensure that the pool is full
        f = (cb) =>
            n = misc.len(@_conn)
            if n >= @_num_connections
                cb()
            else
                 # fill the pool
                async.map(misc.range(@_num_connections - n), ((n,cb)=>@_connect(cb)), cb)

        f (err) =>
            for cb in @_update_pool_cbs
                cb(err)
            delete @_update_pool_cbs

    _monkey_patch_run: () =>
        # We monkey patch run to have similar semantics to rethinkdbdash, so that we don't have to change
