def hear(message, params={})
      raise ArgumentError, "`message` must respond to :channel" unless message.respond_to?(:channel)
      raise ArgumentError, "`message` must respond to :sender" unless message.respond_to?(:sender)

      listeners.hear(message).each do |match|
        event = Houston::Conversations::Event.new(match)

        if block_given?
          yield event, match.listener
        else
          match.listener.call_async event
        end

        # Invoke only one listener per message
        return true
      end

      false
    end
def hear(message, params={})
      raise ArgumentError, "`message` must respond to :channel" unless message.respond_to?(:channel)
      raise ArgumentError, "`message` must respond to :sender" unless message.respond_to?(:sender)

      listeners.hear(message).each do |match|
        event = Houston::Conversations::Event.new(match)

        if block_given?
          yield event, match.listener
        else
          match.listener.call_async event
        end

        # Invoke only one listener per message
        return true
      end

      false
    end
Matches a message against all listeners
 and invokes the first listener that mathes