code: func (bk *Backend) UpsertVal(bucket []string, key string, val []byte, ttl time.Duration) error {
  	// Open the bucket to work on the items.
  	b, err := bk.openBucket(bk.flatten(bucket), os.O_CREATE|os.O_RDWR)
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	defer b.Close()
  
  	// Update the item in the bucket.
  	b.updateItem(key, val, ttl)
  
  	return nil
  }
docs: // UpsertVal inserts (or updates if it already exists) the value for a key
  // with the given TTL.