code: func (t *Transaction) Watch(model Model) error {
  	if len(t.actions) != 0 {
  		return fmt.Errorf("Cannot call Watch after other commands have been added to the transaction")
  	}
  	col, err := getCollectionForModel(model)
  	if err != nil {
  		return err
  	}
  	key := col.ModelKey(model.ModelID())
  	return t.WatchKey(key)
  }
docs: // Watch issues a Redis WATCH command using the key for the given model. If the
  // model changes before the transaction is executed, Exec will return a
  // WatchError and the commands in the transaction will not be executed. Unlike
  // most other transaction methods, Watch does not use delayed execution. Because
  // of how the WATCH command works, Watch must send a command to Redis
  // immediately. You must call Watch or WatchKey before any other transaction
  // methods.