diff --git a/quic/core/http/quic_spdy_client_session_base.cc b/quic/core/http/quic_spdy_client_session_base.cc
index 21ecfee..04f8594 100644
--- a/quic/core/http/quic_spdy_client_session_base.cc
+++ b/quic/core/http/quic_spdy_client_session_base.cc
@@ -228,6 +228,11 @@
   return !HasActiveRequestStreams() && promised_by_id_.empty();
 }
 
+bool QuicSpdyClientSessionBase::ShouldKeepConnectionAlive() const {
+  return QuicSpdySession::ShouldKeepConnectionAlive() ||
+         num_outgoing_draining_streams() > 0;
+}
+
 void QuicSpdyClientSessionBase::OnSettingsFrame(const SettingsFrame& frame) {
   QuicSpdySession::OnSettingsFrame(frame);
   std::unique_ptr<char[]> buffer;
diff --git a/quic/core/http/quic_spdy_client_session_base.h b/quic/core/http/quic_spdy_client_session_base.h
index a3c9aac..20f4087 100644
--- a/quic/core/http/quic_spdy_client_session_base.h
+++ b/quic/core/http/quic_spdy_client_session_base.h
@@ -110,6 +110,9 @@
   // Returns true if there are no active requests and no promised streams.
   bool ShouldReleaseHeadersStreamSequencerBuffer() override;
 
+  // Override to wait for all received responses to be consumed by application.
+  bool ShouldKeepConnectionAlive() const override;
+
   size_t get_max_promises() const {
     return max_open_incoming_unidirectional_streams() *
            kMaxPromisedStreamsMultiplier;
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc
index cdb8b31..1eb69e9 100644
--- a/quic/core/quic_session.cc
+++ b/quic/core/quic_session.cc
@@ -74,6 +74,7 @@
                             config_.GetMaxUnidirectionalStreamsToSend() +
                                 num_expected_unidirectional_static_streams),
       num_draining_streams_(0),
+      num_outgoing_draining_streams_(0),
       num_static_streams_(0),
       flow_controller_(
           this,
@@ -905,6 +906,10 @@
   if (stream_was_draining) {
     QUIC_BUG_IF(num_draining_streams_ == 0);
     --num_draining_streams_;
+    if (!IsIncomingStream(stream_id)) {
+      QUIC_BUG_IF(num_outgoing_draining_streams_ == 0);
+      --num_outgoing_draining_streams_;
+    }
     // Stream Id manager has been informed with draining streams.
     return;
   }
@@ -1664,6 +1669,7 @@
   }
   ++num_draining_streams_;
   if (!IsIncomingStream(stream_id)) {
+    ++num_outgoing_draining_streams_;
     OnCanCreateNewOutgoingStream(unidirectional);
   }
 }
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h
index 32aad51..c9e3216 100644
--- a/quic/core/quic_session.h
+++ b/quic/core/quic_session.h
@@ -594,6 +594,10 @@
 
   size_t num_static_streams() const { return num_static_streams_; }
 
+  size_t num_outgoing_draining_streams() const {
+    return num_outgoing_draining_streams_;
+  }
+
   // Processes the stream type information of |pending| depending on
   // different kinds of sessions' own rules. Returns true if the pending stream
   // is converted into a normal stream.
@@ -738,6 +742,10 @@
   // application to consume data.
   size_t num_draining_streams_;
 
+  // A counter for self initiated streams which have sent and received FIN but
+  // waiting for application to consume data.
+  size_t num_outgoing_draining_streams_;
+
   // A counter for static streams which are in stream_map_.
   size_t num_static_streams_;
 
