diff --git a/clientv3/watch.go b/clientv3/watch.go
index <HASH>..<HASH> 100644
--- a/clientv3/watch.go
+++ b/clientv3/watch.go
@@ -164,8 +164,12 @@ type watcherStream struct {
 }
 
 func NewWatcher(c *Client) Watcher {
+	return NewWatchFromWatchClient(pb.NewWatchClient(c.conn))
+}
+
+func NewWatchFromWatchClient(wc pb.WatchClient) Watcher {
 	return &watcher{
-		remote:  pb.NewWatchClient(c.conn),
+		remote:  wc,
 		streams: make(map[string]*watchGrpcStream),
 	}
 }
clientv3: support creating a Watch from a WatchClient