         @try()
       backoff: ->
         @goto 'BACKOFF'
-      success: ->
+      success: (connectionRdy) ->
+        @backoffTimer.success()
+        @onMessageSuccess connectionRdy
         @goto 'MAX'
       try: ->            # No-op
       pause: ->


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

  isLowRdy: ->
    @maxInFlight < @connections.length

  onMessageSuccess: (connectionRdy) ->
    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()

  addConnection: (conn) ->
    connectionRdy = @createConnectionRdy conn

