diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc
index 191c6566adf10e153486408a7ce5d984d0cb5afa..73a96a84432164a65c40193b03aadcaabcd31252 100644
--- a/test/cpp/qps/server_async.cc
+++ b/test/cpp/qps/server_async.cc
@@ -131,12 +131,7 @@ class AsyncQpsServerTest : public Server {
       std::lock_guard<std::mutex> lock((*ss)->mutex);
       (*ss)->shutdown = true;
     }
-    // TODO (vpai): Remove this deadline and allow Shutdown to finish properly
-    std::thread shutdown_thread([this]() {
-      auto deadline =
-          std::chrono::system_clock::now() + std::chrono::seconds(3);
-      server_->Shutdown(deadline);
-    });
+    std::thread shutdown_thread(&AsyncQpsServerTest::ShutdownThreadFunc, this);
     for (auto cq = srv_cqs_.begin(); cq != srv_cqs_.end(); ++cq) {
       (*cq)->Shutdown();
     }
@@ -153,6 +148,12 @@ class AsyncQpsServerTest : public Server {
   }
 
  private:
+  void ShutdownThreadFunc() {
+    // TODO (vpai): Remove this deadline and allow Shutdown to finish properly
+    auto deadline = std::chrono::system_clock::now() + std::chrono::seconds(3);
+    server_->Shutdown(deadline);
+  }
+
   void ThreadFunc(int thread_idx) {
     // Wait until work is available or we are shutting down
     bool ok;