diff --git a/src/core/ext/client_channel/resolver.c b/src/core/ext/client_channel/resolver.c
index 2ae4fe862e97b4337c19fbfacf7fcbaf0d54c6cc..4a5e4f751b9197d1190e4d10ee2b9d09b9d7a165 100644
--- a/src/core/ext/client_channel/resolver.c
+++ b/src/core/ext/client_channel/resolver.c
@@ -36,6 +36,7 @@
 void grpc_resolver_init(grpc_resolver *resolver,
                         const grpc_resolver_vtable *vtable) {
   resolver->vtable = vtable;
+  resolver->pollset_set = grpc_pollset_set_create();
   gpr_ref_init(&resolver->refs, 1);
 }
 
@@ -62,6 +63,7 @@ void grpc_resolver_unref(grpc_resolver *resolver,
 void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver) {
 #endif
   if (gpr_unref(&resolver->refs)) {
+    grpc_pollset_set_destroy(resolver->pollset_set);
     resolver->vtable->destroy(exec_ctx, resolver);
   }
 }
diff --git a/src/core/ext/client_channel/resolver.h b/src/core/ext/client_channel/resolver.h
index 96ece92b9d82e30f25f9591cfe905014dad5515a..d2831206483a6c742f56be144cf246028b98dec1 100644
--- a/src/core/ext/client_channel/resolver.h
+++ b/src/core/ext/client_channel/resolver.h
@@ -36,6 +36,7 @@
 
 #include "src/core/ext/client_channel/subchannel.h"
 #include "src/core/lib/iomgr/iomgr.h"
+#include "src/core/lib/iomgr/pollset_set.h"
 
 typedef struct grpc_resolver grpc_resolver;
 typedef struct grpc_resolver_vtable grpc_resolver_vtable;
@@ -43,6 +44,7 @@ typedef struct grpc_resolver_vtable grpc_resolver_vtable;
 /** \a grpc_resolver provides \a grpc_channel_args objects to its caller */
 struct grpc_resolver {
   const grpc_resolver_vtable *vtable;
+  grpc_pollset_set *pollset_set;
   gpr_refcount refs;
 };