code: func (w *Watch) WaitNext(ctx context.Context, lastRevision int64, notify chan<-int64) {
  	for {
  		w.rwl.RLock()
  		if w.revision > lastRevision {
  			w.rwl.RUnlock()
  			break
  		}
  		cond := w.cond
  		w.rwl.RUnlock()
  		select{
  		case <-cond:
  		case <-ctx.Done():
  			return
  		}
  	}
  	// We accept larger revision, so do not need to use RLock
  	select{
  	case notify<-w.revision:
  	case <-ctx.Done():
  	}
  }
docs: // Wait until revision is greater than lastRevision