Do not crash on null stream in writing to bidirectional streams

When SendData/SendvData is called, it might be that OnClose
has been invoked without an error, in which case
BidirectionalStream::Delegate::OnFailed would not have been
invoked. This is theoretically possible, but I am not
aware if such case would exist.

This CL removes the assumption that SendData/SendvData
is only called when stream is alive. If stream is
destroyed, propagate that as an ERR_UNEXPECTED to caller,
instead of crashing with a segfault.

BUG=606394

Review-Url: https://codereview.chromium.org/2032733002
Cr-Commit-Position: refs/heads/master@{#398031}
diff --git a/net/http/bidirectional_stream.h b/net/http/bidirectional_stream.h
index 0810387ee..95e7f2e9 100644
--- a/net/http/bidirectional_stream.h
+++ b/net/http/bidirectional_stream.h
@@ -81,8 +81,8 @@
     // EOF has not been received, or to send data if there is no pending send.
     virtual void OnTrailersReceived(const SpdyHeaderBlock& trailers) = 0;
 
-    // Called when the stream is closed or an error occurred.
-    // No other delegate functions will be called after this.
+    // Called when an error occurred. Do not call into the stream after this
+    // point. No other delegate functions will be called after this.
     virtual void OnFailed(int error) = 0;
 
    protected: