     @balance()
 
   backoff: ->
-    @backoffTimer.failure()
-
     conn.backoff() for conn in @connections
     clearTimeout @backoffId if @backoffId
 
     onTimeout = =>
+      @log 'Backoff done'
       @raise 'try'
 
     # Convert from the BigNumber representation to Number.
     delay = new Number(@backoffTimer.getInterval().valueOf()) * 1000
     @backoffId = setTimeout onTimeout, delay
+    @log "Backoff for #{delay}"
 
   inFlight: ->
     add = (previous, conn) ->

      @balance()

    conn.on NSQDConnection.FINISHED, =>
      @backoffTimer.success()

      unless @isPaused()
        if @isLowRdy()
          # Balance the RDY count amoung existing connections given the low RDY
          # condition.
          @balance()
        else
          # Restore RDY count for connection to the connection max.
          connectionRdy.bump()

      @raise 'success'

    conn.on NSQDConnection.REQUEUED, =>
      # Since there isn't a guaranteed order for the REQUEUED and BACKOFF


    BACKOFF:
      Enter: ->
        @backoffTimer.failure()
        @backoff()
      backoff: ->
        @backoffTimer.failure()
        @backoff()
      success: ->       # No-op
      try: ->
