code: func (txn *Txn) FirstWatch(table, index string, args ...interface{}) (<-chan struct{}, interface{}, error) {
  	// Get the index value
  	indexSchema, val, err := txn.getIndexValue(table, index, args...)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	// Get the index itself
  	indexTxn := txn.readableIndex(table, indexSchema.Name)
  
  	// Do an exact lookup
  	if indexSchema.Unique && val != nil && indexSchema.Name == index {
  		watch, obj, ok := indexTxn.GetWatch(val)
  		if !ok {
  			return watch, nil, nil
  		}
  		return watch, obj, nil
  	}
  
  	// Handle non-unique index by using an iterator and getting the first value
  	iter := indexTxn.Root().Iterator()
  	watch := iter.SeekPrefixWatch(val)
  	_, value, _ := iter.Next()
  	return watch, value, nil
  }
docs: // FirstWatch is used to return the first matching object for
  // the given constraints on the index along with the watch channel