diff --git a/grpc-sys/Cargo.toml b/grpc-sys/Cargo.toml
index 6d8551e..86f5949 100644
--- a/grpc-sys/Cargo.toml
+++ b/grpc-sys/Cargo.toml
@@ -26,6 +26,7 @@
     "grpc/src/ruby/*",
     "grpc/vsprojects/*",
     "grpc/test/core/end2end/*",
+    "grpc/third_party/zlib/*",
     "grpc/third_party/abseil-cpp/*",
     "grpc/third_party/benchmark/*",
     "grpc/third_party/bloaty/*",
@@ -48,6 +49,7 @@
 [dependencies]
 libc = "0.2"
 openssl-sys = { version = "0.9", optional = true, features = ["vendored"] }
+libz-sys = { version = "1.0.25", features = ["static"] }
 
 [features]
 default = []
diff --git a/grpc-sys/build.rs b/grpc-sys/build.rs
index d651e46..c0e1ab4 100644
--- a/grpc-sys/build.rs
+++ b/grpc-sys/build.rs
@@ -41,7 +41,6 @@
 fn prepare_grpc() {
     let mut modules = vec![
         "grpc",
-        "grpc/third_party/zlib",
         "grpc/third_party/cares/cares",
         "grpc/third_party/address_sorting",
     ];
@@ -77,7 +76,7 @@
 fn build_grpc(cc: &mut Build, library: &str) {
     prepare_grpc();
 
-    let mut third_party = vec!["cares/cares/lib", "zlib"];
+    let mut third_party = vec!["cares/cares/lib"];
 
     let dst = {
         let mut config = Config::new("grpc");
@@ -151,21 +150,16 @@
         } else if cfg!(feature = "secure") {
             third_party.extend_from_slice(&["boringssl/ssl", "boringssl/crypto"]);
         }
+        // Uses zlib from libz-sys.
+        setup_libz(&mut config);
         config.build_target(library).uses_cxx11().build()
     };
 
-    let mut zlib = "z";
     let build_dir = format!("{}/build", dst.display());
     if get_env("CARGO_CFG_TARGET_OS").map_or(false, |s| s == "windows") {
         let profile = match &*env::var("PROFILE").unwrap_or("debug".to_owned()) {
-            "bench" | "release" => {
-                zlib = "zlibstatic";
-                "Release"
-            }
-            _ => {
-                zlib = "zlibstaticd";
-                "Debug"
-            }
+            "bench" | "release" => "Release",
+            _ => "Debug",
         };
         println!("cargo:rustc-link-search=native={}/{}", build_dir, profile);
         for path in third_party {
@@ -184,7 +178,7 @@
         }
     }
 
-    println!("cargo:rustc-link-lib=static={}", zlib);
+    println!("cargo:rustc-link-lib=static=z");
     println!("cargo:rustc-link-lib=static=cares");
     println!("cargo:rustc-link-lib=static=gpr");
     println!("cargo:rustc-link-lib=static=address_sorting");
@@ -231,6 +225,23 @@
     println!("cargo:rustc-link-lib=crypto");
 }
 
+fn setup_libz(config: &mut Config) {
+    config.define("gRPC_ZLIB_PROVIDER", "package");
+    config.register_dep("Z");
+    // cmake script expect libz.a being under ${DEP_Z_ROOT}/lib, but libz-sys crate put it
+    // under ${DEP_Z_ROOT}/build. Append the path to CMAKE_PREFIX_PATH to get around it.
+    let zlib_root = env::var("DEP_Z_ROOT").unwrap();
+    let prefix_path = if let Ok(prefix_path) = env::var("CMAKE_PREFIX_PATH") {
+        format!("{};{}/build", prefix_path, zlib_root)
+    } else {
+        format!("{}/build", zlib_root)
+    };
+    // To avoid linking system library, set lib path explicitly.
+    println!("cargo:rustc-link-search=native={}/build", zlib_root);
+    println!("cargo:rustc-link-search=native={}/lib", zlib_root);
+    env::set_var("CMAKE_PREFIX_PATH", prefix_path);
+}
+
 #[cfg(feature = "openssl-vendored")]
 fn setup_openssl(config: &mut Config) {
     // openssl-sys uses openssl-src to build the library. openssl-src uses
diff --git a/scripts/reset-submodule b/scripts/reset-submodule
index 0f778a1..0fa7738 100755
--- a/scripts/reset-submodule
+++ b/scripts/reset-submodule
@@ -3,7 +3,6 @@
 cd grpc-sys/grpc
 git submodule update --init third_party/boringssl
 git submodule update --init third_party/cares/cares
-git submodule update --init third_party/zlib
 cd third_party/zlib
 git clean -f
 git reset --hard
diff --git a/src/async/executor.rs b/src/async/executor.rs
index b1ae5e8..8f4ea2e 100644
--- a/src/async/executor.rs
+++ b/src/async/executor.rs
@@ -117,7 +117,7 @@
     pub fn resolve(self, success: bool) {
         // it should always be canceled for now.
         assert!(success);
-        poll(&Arc::new(self.clone()), true);
+        poll(&Arc::new(self), true);
     }
 }
 
