         opts = defaults opts,
             limit : 10000     # number of blobs to backup
             path  : required  # path where [timestamp].tar file is placed
-            repeat_until_done : false  # if true, keeps re-call'ing this function until no more results to backup
+            repeat_until_done : 0 # if positive keeps re-call'ing this function until no more results to backup (pauses this many seconds between)
             cb    : undefined # cb(err, '[timestamp].tar')
         dbg     = @dbg("backup_blobs_to_tarball(limit=#{opts.limit},path='#{opts.path}')")
         join    = require('path').join

        @_activity?()
        return @_value?.has(key)

    close: () =>
        dbg = @_dbg('close')
        if @_closed  # nothing further to do
            dbg("already closed")
            return
        @removeAllListeners()
        @_closed = true
        @_feed?.close()
        clearInterval(@_idle_timeout_interval)

    # a tarball in the given path.  The tarball's name is the time when the backup starts.
    # The tarball is compressed using gzip compression.
    #
    #    db._error_thresh=1e6; db.backup_blobs_to_tarball(limit:10000,path:'/backup/tmp-blobs',repeat_until_done:60, cb:done())
    #
    # I have not written code to restore from these tarballs.  Assuming the database has been restore,
    # so there is an entry in the blobs table for each blob, it would suffice to upload the tarballs,
