ContextWatcher watches a context and performs an action when the context is canceled. It can watch one context at a time.
type ContextWatcher struct {
// contains filtered or unexported fields
}
func NewContextWatcher(onCancel func(), onUnwatchAfterCancel func()) *ContextWatcher
NewContextWatcher returns a ContextWatcher. onCancel will be called when a watched context is canceled. OnUnwatchAfterCancel will be called when Unwatch is called and the watched context had already been canceled and onCancel called.
func (cw *ContextWatcher) Unwatch()
Unwatch stops watching the previously watched context. If the onCancel function passed to NewContextWatcher was called then onUnwatchAfterCancel will also be called.
func (cw *ContextWatcher) Watch(ctx context.Context)
Watch starts watching ctx. If ctx is canceled then the onCancel function passed to NewContextWatcher will be called.