def watch(self, key, criteria, callback):
        if hasattr(criteria, '__call__'):
            pred = criteria
        else:
            pred = lambda incoming: _match_criteria(criteria, incoming)
        with self._watches_lock:
            self._watches[key] = (pred, callback)

# others can add in implementations here
Registers a new watch under [key] (which can be used with `unwatch()`
dataset/ETHPy150Open cemerick/nrepl-python-client/nrepl/__init__.py/WatchableConnection.watch