in lib/src/streams/stream_handler.dart [441:462]
void _handleNewOutgoingMessage(Http2StreamImpl stream, StreamMessage msg) {
if (stream.state == StreamState.Idle) {
if (msg is! HeadersStreamMessage) {
var exception = TransportException(
'The first message on a stream needs to be a headers frame.');
_closeStreamAbnormally(stream, exception);
return;
}
_changeState(stream, StreamState.Open);
}
if (msg is DataStreamMessage) {
_sendData(stream, msg.bytes, endStream: msg.endStream);
} else if (msg is HeadersStreamMessage) {
_sendHeaders(stream, msg.headers, endStream: msg.endStream);
}
if (stream.outgoingQueue.bufferIndicator.wouldBuffer &&
!stream._outgoingCSubscription.isPaused) {
stream._outgoingCSubscription.pause();
}
}