clientv3/watch.go
func (w *watchGrpcStream) serveWatchClient(wc pb.Watch_WatchClient) {
	for {
		resp, err := wc.Recv()
		if err != nil {
			select {
			case w.errc <- err:
			case <-w.donec:
			}
			return
		}
		select {
		case w.respc <- resp:
		case <-w.donec:
			return
		}
	}
}
func (w *watchGrpcStream) serveWatchClient(wc pb.Watch_WatchClient) {
	for {
		resp, err := wc.Recv()
		if err != nil {
			select {
			case w.errc <- err:
			case <-w.donec:
			}
			return
		}
		select {
		case w.respc <- resp:
		case <-w.donec:
			return
		}
	}
}
func ( w * watchGrpcStream ) serveWatchClient ( wc pb . Watch_WatchClient ) { for { resp , err := wc . Recv ( ) if err != nil { select { case w . errc <- err : case <- w . donec : } return } select { case w . respc <- resp : case <- w . donec : return } } }
// serveWatchClient forwards messages from the grpc stream to run()
serveWatchClient forwards messages from the grpc stream to run ()