   #
   # Returns nothing.
   # Returns before executing callback
-  processListeners: (message, context, done) ->
+  processListeners: (context, done) ->
     # Try executing all registered Listeners in order of registration
     # and return after message is done being processed
     anyListenersExecuted = false


    @middleware.receive.execute(
      {response: new Response(this, message)}
      @processListeners.bind this, message
      receiveMiddlewareDone
    )


      @listeners,
      (listener, cb) =>
        try
          listener.call context.response.message, @middleware.listener, (listenerExecuted) ->
            anyListenersExecuted = anyListenersExecuted || listenerExecuted
            # Defer to the event loop at least after every listener so the
            # stack doesn't get too big
            process.nextTick () ->
              # Stop processing when message.done == true
              cb(context.response.message.done)
        catch err
          @emit('error', err, new @Response(@, context.response.message, []))
          # Continue to next listener when there is an error
          cb(false)
      ,
      # Ignore the result ( == the listener that set message.done = true)
      (_) =>
        # If no registered Listener matched the message
        if context.response.message not instanceof CatchAllMessage and not anyListenersExecuted
          @logger.debug 'No listeners executed; falling back to catch-all'
          @receive new CatchAllMessage(context.response.message), done
        else
          process.nextTick done if done?
    )
