code: func (w *KeyedValue) WaitForChange(k string) interface{} {
  	w.lock.Lock()
  	w.once.Do(w.init)
  
  	// If we're closed, we're closed
  	if w.closed {
  		w.lock.Unlock()
  		return ErrClosed
  	}
  
  	// Check for an active waiter. If there isn't one, make it
  	val := w.waiters[k]
  	if val == nil {
  		val = new(Value)
  		w.waiters[k] = val
  	}
  	w.lock.Unlock()
  
  	// And wait
  	return val.Value()
  }
docs: // WaitForChange waits for the value with the given key to be set again.
  // If the key isn't set, it'll wait for an initial value. Note that while
  // it is called "WaitForChange", the value isn't guaranteed to _change_;
  // this will return when a SetValue is called for the given k.