code: func (s *KVStore) View(fn func(kv.Tx) error) error {
  	s.mu.RLock()
  	defer s.mu.RUnlock()
  	return fn(&Tx{
  		kv:       s,
  		writable: false,
  		ctx:      context.Background(),
  	})
  }
docs: // View opens up a transaction with a read lock.