# File lib/redis.rb, line 1995
  def watch(*keys)
    synchronize do |client|
      client.call([:watch] + keys)

      if block_given?
        begin
          yield(self)
        rescue ConnectionError
          raise
        rescue StandardError
          unwatch
          raise
        end
      end
    end
  end