code: func (kv *boltKV) Update(
  	key string,
  	value interface{},
  	ttl uint64,
  ) (*kvdb.KVPair, error) {
  	kv.mutex.Lock()
  	defer kv.mutex.Unlock()
  
  	if _, err := kv.exists(key); err != nil {
  		return nil, kvdb.ErrNotFound
  	}
  	kvp, err := kv.put(key, value, ttl, kvdb.KVSet)
  	if err != nil {
  		return nil, err
  	}
  
  	kvp.Action = kvdb.KVSet
  	return kvp, nil
  }
docs: // XXX needs to be atomic