anchor.diff:  		when StreamID > LastStreamID ->
   	terminate(State, {connection_error, protocol_error,
   		'WINDOW_UPDATE frame received on a stream in idle state. (RFC7540 5.1)'});
  -frame(State0=#state{streams=Streams0}, {window_update, StreamID, Increment}) ->
  +frame(State0=#state{streams=Streams0, rst_lingering_streams=RstLingering},
  +		{window_update, StreamID, Increment}) ->
   	case lists:keyfind(StreamID, #stream.id, Streams0) of
   		#stream{local_window=StreamWindow} when StreamWindow + Increment > 16#7fffffff ->
   			stream_reset(State0, StreamID, {stream_error, flow_control_error,
  
positive.code: 	terminate(State, {connection_error, protocol_error,
  		'RST_STREAM frame received on a stream in idle state. (RFC7540 5.1)'});
  frame(State, {rst_stream, StreamID, Reason}) ->
  	stream_terminate(State, StreamID, {stream_error, Reason, 'Stream reset requested by client.'});
  %% SETTINGS frame.
  frame(State0=#state{socket=Socket, transport=Transport, opts=Opts,
  		remote_settings=Settings0}, {settings, Settings}) ->
  
negative.code: 				Stream0#stream{local_window=StreamWindow + Increment}),
  			Streams = lists:keystore(StreamID, #stream.id, Streams0, Stream),
  			State#state{streams=Streams};
  		false ->
  			%% WINDOW_UPDATE frames may be received for a short period of time
  			%% after a stream is closed. They must be ignored.
  			case lists:member(StreamID, RstLingering) of
  				false -> State0;
  				true -> stream_closed(State0, StreamID, {stream_error, stream_closed,
  					'WINDOW_UPDATE frame received after the stream was reset. (RFC7540 5.1)'})
  			end
  	end;
  %% Unexpected CONTINUATION frame.
  frame(State, {continuation, _, _, _}) ->
  