       @status = 'paused'
       @pauseDf.promise
     @bufferQueue.unshift(pause)
-    clearTimeout(@waitHandle)
 
   reset: ->
     @status == 'idle'

      if df && Q.isPending(df.promise)
        df.reject('Task runner reset')
      @[name] = null
    clearTimeout(@waitHandle)
    Logger.debug('Task runner reset')

    if @pauseDf
      @pauseDf.resolve()
      @pauseDf = null
    @status = 'running'

    # NOTE: Uses system time instead of timers to prevent locking up during synchronous tasks.
    startTime = null
    runsTime = 0
    lastTaskIsWait = false
    runNext = Meteor.bindEnvironment =>
      if startTime? && !lastTaskIsWait
        currentTime = new Date().getTime()
        timeDiff = currentTime - startTime
        runsTime += timeDiff
        if runsTime >= @options.runDuration
          Logger.debug('Task runner ran for', runsTime, 'ms')
          @_wait()
          lastTaskIsWait = true
          runsTime = 0
      else
        lastTaskIsWait = false
      if @bufferQueue.length == 0
        Logger.debug('Task runner complete')
        @runDf.resolve()
        @reset()
        return
      callback = @bufferQueue.shift()
      startTime = new Date().getTime()
      @runQueue.add(callback).fin(runNext)
    
    # Running on an empty queue will reset the promise so we need to store a refernece to the
