<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def every_match(self, callback, **kwargs):
 """Invoke callback every time a matching message is received. The callback will be invoked directly inside process_message so that you can guarantee that it has been called by the time process_message has returned. The callback can be removed by a call to remove_waiter(), passing the handle object returned by this call to identify it. Args: callback (callable):
 A callable function that will be called as callback(message) whenever a matching message is received. Returns: object: An opaque handle that can be passed to remove_waiter(). This handle is the only way to remove this callback if you no longer want it to be called. """


        if len(kwargs) == 0:
            raise ArgumentError("You must specify at least one message field to wait on")

        spec = MessageSpec(**kwargs)
        responder = self._add_waiter(spec, callback)

        return (spec, responder)