callback func(T),
timeSource clock.TimeSource,
w := &gradualChangeSubscribeWrapper[T]{changeKey: changeKey, callback: callback, clock: timeSource}
w.lock.Lock()
w.change, w.cancelSub = subscribable(w.changeCallback)
val, _ := w.reevalLocked()
w.lock.Unlock()
return val, w.cancel
}
type gradualChangeSubscribeWrapper[T any] struct {