diff --git a/http2/adapter/http2_util.cc b/http2/adapter/http2_util.cc
index f93b161..553c0bd 100644
--- a/http2/adapter/http2_util.cc
+++ b/http2/adapter/http2_util.cc
@@ -97,8 +97,6 @@
       return "InvalidPushPromise";
     case ConnectionError::kExceededMaxConcurrentStreams:
       return "ExceededMaxConcurrentStreams";
-    case ConnectionError::kHttpMessaging:
-      return "HttpMessaging";
   }
   return "UnknownConnectionError";
 }
diff --git a/http2/adapter/http2_visitor_interface.h b/http2/adapter/http2_visitor_interface.h
index 61c76b7..0e8619f 100644
--- a/http2/adapter/http2_visitor_interface.h
+++ b/http2/adapter/http2_visitor_interface.h
@@ -78,9 +78,6 @@
     kInvalidPushPromise,
     // The peer exceeded the max concurrent streams limit.
     kExceededMaxConcurrentStreams,
-    // The peer violated HTTP messaging semantics.
-    // TODO(b/214614028): Remove once these errors can be just RST_STREAM'd.
-    kHttpMessaging,
   };
   virtual void OnConnectionError(ConnectionError error) = 0;
 
diff --git a/http2/adapter/oghttp2_adapter_test.cc b/http2/adapter/oghttp2_adapter_test.cc
index 3203560..3660d20 100644
--- a/http2/adapter/oghttp2_adapter_test.cc
+++ b/http2/adapter/oghttp2_adapter_test.cc
@@ -4572,8 +4572,8 @@
   EXPECT_CALL(visitor, OnSettingsEnd());
 
   // Stream 1: content-length is larger than actual data
-  // All data and then OnInvalidFrame() are delivered to the visitor. Note that
-  // nghttp2 does not deliver OnInvalidFrame().
+  // All data is delivered to the visitor. Note that neither oghttp2 nor
+  // nghttp2 delivers OnInvalidFrame().
   EXPECT_CALL(visitor, OnFrameHeader(1, _, HEADERS, 4));
   EXPECT_CALL(visitor, OnBeginHeadersForStream(1));
   EXPECT_CALL(visitor, OnHeaderForStream(1, _, _)).Times(5);
@@ -4581,33 +4581,24 @@
   EXPECT_CALL(visitor, OnFrameHeader(1, _, DATA, 1));
   EXPECT_CALL(visitor, OnBeginDataForStream(1, 1));
   EXPECT_CALL(visitor, OnDataForStream(1, "h"));
-  EXPECT_CALL(visitor,
-              OnInvalidFrame(
-                  1, Http2VisitorInterface::InvalidFrameError::kHttpMessaging));
 
   // Stream 3: content-length is smaller than actual data
   // The beginning of data is delivered to the visitor, but not the actual data.
-  // OnInvalidFrame() is delivered (unlike with nghttp2).
+  // Again, neither oghttp2 nor nghttp2 delivers OnInvalidFrame().
   EXPECT_CALL(visitor, OnFrameHeader(3, _, HEADERS, 4));
   EXPECT_CALL(visitor, OnBeginHeadersForStream(3));
   EXPECT_CALL(visitor, OnHeaderForStream(3, _, _)).Times(5);
   EXPECT_CALL(visitor, OnEndHeadersForStream(3));
   EXPECT_CALL(visitor, OnFrameHeader(3, _, DATA, 1));
   EXPECT_CALL(visitor, OnBeginDataForStream(3, 5));
-  EXPECT_CALL(visitor,
-              OnInvalidFrame(
-                  3, Http2VisitorInterface::InvalidFrameError::kHttpMessaging));
 
   // Stream 5: content-length is invalid and HEADERS ends the stream
-  // Only oghttp2 invokes OnEndHeadersForStream(), but both oghttp2 and nghttp2
-  // invoke OnInvalidFrame().
+  // Only oghttp2 invokes OnEndHeadersForStream(). Only nghttp2 invokes
+  // OnInvalidFrame().
   EXPECT_CALL(visitor, OnFrameHeader(5, _, HEADERS, 5));
   EXPECT_CALL(visitor, OnBeginHeadersForStream(5));
   EXPECT_CALL(visitor, OnHeaderForStream(5, _, _)).Times(5);
   EXPECT_CALL(visitor, OnEndHeadersForStream(5));
-  EXPECT_CALL(visitor,
-              OnInvalidFrame(
-                  5, Http2VisitorInterface::InvalidFrameError::kHttpMessaging));
 
   const int64_t stream_result = adapter->ProcessBytes(stream_frames);
   EXPECT_EQ(stream_frames.size(), static_cast<size_t>(stream_result));
diff --git a/http2/adapter/oghttp2_session.cc b/http2/adapter/oghttp2_session.cc
index 59ce29b..827e80b 100644
--- a/http2/adapter/oghttp2_session.cc
+++ b/http2/adapter/oghttp2_session.cc
@@ -1701,15 +1701,6 @@
 void OgHttp2Session::HandleContentLengthError(Http2StreamId stream_id) {
   EnqueueFrame(absl::make_unique<spdy::SpdyRstStreamIR>(
       stream_id, spdy::ERROR_CODE_PROTOCOL_ERROR));
-  // TODO(b/214614028): The OnInvalidFrame() is for nghttp2 parity, but parity
-  // causes this error to be connection-level in Envoy. Revisit after migration.
-  const bool ok = visitor_.OnInvalidFrame(
-      stream_id, Http2VisitorInterface::InvalidFrameError::kHttpMessaging);
-  if (!ok) {
-    fatal_visitor_callback_failure_ = true;
-    LatchErrorAndNotify(Http2ErrorCode::REFUSED_STREAM,
-                        ConnectionError::kHttpMessaging);
-  }
 }
 
 }  // namespace adapter
