Return an nghttp2-compatible error value for OgHttp2Session::Send().

This change is needed for nghttp2 and Envoy compatibility:
  - http://google3/third_party/envoy/src/source/common/http/http2/codec_impl.cc;l=1112-1122;rcl=414009764 (H/T Biren)
  - http://google3/third_party/envoy/src/source/common/http/http2/codec_impl.cc;l=1381;rcl=414009764

PiperOrigin-RevId: 416335543
diff --git a/http2/adapter/oghttp2_adapter_test.cc b/http2/adapter/oghttp2_adapter_test.cc
index b274f4a..fccdf1d 100644
--- a/http2/adapter/oghttp2_adapter_test.cc
+++ b/http2/adapter/oghttp2_adapter_test.cc
@@ -1517,7 +1517,7 @@
   EXPECT_CALL(visitor, OnConnectionError(ConnectionError::kSendError));
 
   int result = adapter->Send();
-  EXPECT_EQ(result, Http2VisitorInterface::kSendError);
+  EXPECT_LT(result, 0);
 }
 
 TEST(OgHttp2AdapterClientTest, ClientForbidsPushPromise) {
diff --git a/http2/adapter/oghttp2_session.cc b/http2/adapter/oghttp2_session.cc
index 1f6d2fd..09bbe7e 100644
--- a/http2/adapter/oghttp2_session.cc
+++ b/http2/adapter/oghttp2_session.cc
@@ -33,6 +33,9 @@
 const uint32_t kDefaultHpackTableCapacity = 4096u;
 const uint32_t kMaximumHpackTableCapacity = 65536u;
 
+// Corresponds to NGHTTP2_ERR_CALLBACK_FAILURE.
+const int kSendError = -902;
+
 // TODO(birenroy): Consider incorporating spdy::FlagsSerializionVisitor here.
 class FrameAttributeCollector : public spdy::SpdyFrameVisitor {
  public:
@@ -492,7 +495,7 @@
   if (continue_writing == SendResult::SEND_OK) {
     continue_writing = SendQueuedFrames();
   }
-  return continue_writing == SendResult::SEND_ERROR ? -1 : 0;
+  return continue_writing == SendResult::SEND_ERROR ? kSendError : 0;
 }
 
 bool OgHttp2Session::HasReadyStream() const {