diff --git a/registry/etcd/watcher.go b/registry/etcd/watcher.go
index fdf2ea58..b8ce443d 100644
--- a/registry/etcd/watcher.go
+++ b/registry/etcd/watcher.go
@@ -48,6 +48,9 @@ func (ew *etcdWatcher) Next() (*registry.Result, error) {
 		if wresp.Err() != nil {
 			return nil, wresp.Err()
 		}
+		if wresp.Canceled {
+			return nil, errors.New("could not get next")
+		}
 		for _, ev := range wresp.Events {
 			service := decode(ev.Kv.Value)
 			var action string