diff --git a/http2/adapter/nghttp2_adapter_test.cc b/http2/adapter/nghttp2_adapter_test.cc
index 8708eb8..3aec115 100644
--- a/http2/adapter/nghttp2_adapter_test.cc
+++ b/http2/adapter/nghttp2_adapter_test.cc
@@ -70,21 +70,21 @@
                  {":scheme", "http"},
                  {":authority", "example.com"},
                  {":path", "/this/is/request/one"}});
-  const auto nvs1 = GetRequestNghttp2Nvs(headers1);
+  const auto nvs1 = GetNghttp2Nvs(headers1);
 
   const std::vector<const Header> headers2 =
       ToHeaders({{":method", "GET"},
                  {":scheme", "http"},
                  {":authority", "example.com"},
                  {":path", "/this/is/request/two"}});
-  const auto nvs2 = GetRequestNghttp2Nvs(headers2);
+  const auto nvs2 = GetNghttp2Nvs(headers2);
 
   const std::vector<const Header> headers3 =
       ToHeaders({{":method", "GET"},
                  {":scheme", "http"},
                  {":authority", "example.com"},
                  {":path", "/this/is/request/three"}});
-  const auto nvs3 = GetRequestNghttp2Nvs(headers3);
+  const auto nvs3 = GetNghttp2Nvs(headers3);
 
   const int32_t stream_id1 =
       nghttp2_submit_request(adapter->session().raw_ptr(), nullptr, nvs1.data(),
diff --git a/http2/adapter/nghttp2_session_test.cc b/http2/adapter/nghttp2_session_test.cc
index 790e331..169d2f2 100644
--- a/http2/adapter/nghttp2_session_test.cc
+++ b/http2/adapter/nghttp2_session_test.cc
@@ -108,21 +108,21 @@
                  {":scheme", "http"},
                  {":authority", "example.com"},
                  {":path", "/this/is/request/one"}});
-  const auto nvs1 = GetRequestNghttp2Nvs(headers1);
+  const auto nvs1 = GetNghttp2Nvs(headers1);
 
   const std::vector<const Header> headers2 =
       ToHeaders({{":method", "GET"},
                  {":scheme", "http"},
                  {":authority", "example.com"},
                  {":path", "/this/is/request/two"}});
-  const auto nvs2 = GetRequestNghttp2Nvs(headers2);
+  const auto nvs2 = GetNghttp2Nvs(headers2);
 
   const std::vector<const Header> headers3 =
       ToHeaders({{":method", "GET"},
                  {":scheme", "http"},
                  {":authority", "example.com"},
                  {":path", "/this/is/request/three"}});
-  const auto nvs3 = GetRequestNghttp2Nvs(headers3);
+  const auto nvs3 = GetNghttp2Nvs(headers3);
 
   const int32_t stream_id1 = nghttp2_submit_request(
       session.raw_ptr(), nullptr, nvs1.data(), nvs1.size(), nullptr, nullptr);
diff --git a/http2/adapter/nghttp2_util.cc b/http2/adapter/nghttp2_util.cc
index 8e720a6..8d23a55 100644
--- a/http2/adapter/nghttp2_util.cc
+++ b/http2/adapter/nghttp2_util.cc
@@ -54,7 +54,7 @@
   return absl::string_view(reinterpret_cast<const char*>(pointer), length);
 }
 
-std::vector<nghttp2_nv> GetRequestNghttp2Nvs(absl::Span<const Header> headers) {
+std::vector<nghttp2_nv> GetNghttp2Nvs(absl::Span<const Header> headers) {
   const int num_headers = headers.size();
   auto nghttp2_nvs = std::vector<nghttp2_nv>(num_headers);
   for (int i = 0; i < num_headers; ++i) {
diff --git a/http2/adapter/nghttp2_util.h b/http2/adapter/nghttp2_util.h
index a8d340a..e2c3e7a 100644
--- a/http2/adapter/nghttp2_util.h
+++ b/http2/adapter/nghttp2_util.h
@@ -39,9 +39,9 @@
 absl::string_view ToStringView(uint8_t* pointer, size_t length);
 absl::string_view ToStringView(const uint8_t* pointer, size_t length);
 
-// Returns the nghttp2 header structure from the given request |headers|, which
+// Returns the nghttp2 header structure from the given |headers|, which
 // must have the correct pseudoheaders preceding other headers.
-std::vector<nghttp2_nv> GetRequestNghttp2Nvs(absl::Span<const Header> headers);
+std::vector<nghttp2_nv> GetNghttp2Nvs(absl::Span<const Header> headers);
 
 // Returns the nghttp2 header structure from the given response |headers|, with
 // the :status pseudoheader first based on the given |response_code|. The
