anchor.diff:  	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.'});
  +	stream_terminate(stream_rst_linger(State, StreamID), 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}) ->
  
positive.code: stream_linger(State=#state{lingering_streams=Lingering0}, StreamID) ->
  	Lingering = [StreamID|lists:sublist(Lingering0, 100 - 1)],
  	State#state{lingering_streams=Lingering}.
  
  stream_terminate(State0=#state{streams=Streams0, children=Children0}, StreamID, Reason) ->
  	case lists:keytake(StreamID, #stream.id, Streams0) of
  
negative.code: 	%% by the client or by the server through PUSH_PROMISE frames.
  	streams = [] :: [stream()],
  
  	%% HTTP/2 streams that have been reset recently by the server.
  	%% We are expected to keep receiving additional frames after
  	%% sending an RST_STREAM.
  	lingering_streams = [] :: [cowboy_stream:streamid()],
  
  	%% HTTP/2 streams that have been reset recently by the client.
  	%% We keep a few of these around in order to reject subsequent
  	%% frames on these streams.
  	rst_lingering_streams = [] :: [cowboy_stream:streamid()],
  
  	%% Streams can spawn zero or more children which are then managed
  	%% by this module if operating as a supervisor.
  