anchor.diff:  		{self(), StreamID}, Peer, OnRequest, OnResponse,
   		Env, Middlewares, Method, Host, Path, Version, Headers
   	]),
  -	loop(new_child(State, StreamID, Pid, IsFin));
  +	new_child(State, StreamID, Pid, IsFin);
   %% RST_STREAM.
   handle_frame(State, {rst_stream, StreamID, Status}) ->
   	error_logger:error_msg("Received RST_STREAM frame ~p ~p",
   		[StreamID, Status]),
   	%% @todo Stop StreamID.
  -	loop(State);
  +	State;
   %% PING initiated by the server; ignore, we don't send any.
   handle_frame(State, {ping, PingID}) when PingID rem 2 =:= 0 ->
   	error_logger:error_msg("Ignored PING control frame: ~p~n", [PingID]),
  -	loop(State);
  +	State;
   %% PING initiated by the client; send it back.
   handle_frame(State=#state{socket=Socket, transport=Transport},
   		{ping, PingID}) ->
   	Transport:send(Socket, cow_spdy:ping(PingID)),
  -	loop(State);
  +	State;
   %% Data received for a stream.
   handle_frame(State, {data, StreamID, IsFin, Data}) ->
   	Child = #child{input=nofin, in_buffer=Buffer, is_recv=IsRecv}
  
positive.code: 		middlewares=Middlewares, env=Env, onrequest=OnRequest,
  		onresponse=OnResponse, peer=Peer, zdef=Zdef, zinf=Zinf}).
  
  loop(State=#state{parent=Parent, socket=Socket, transport=Transport,
  		buffer=Buffer, zinf=Zinf, children=Children}) ->
  	{OK, Closed, Error} = Transport:messages(),
  	Transport:setopts(Socket, [{active, once}]),
  	receive
  		{OK, Socket, Data} ->
  			Data2 = << Buffer/binary, Data/binary >>,
  			case cow_spdy:split(Data2) of
  				{true, Frame, Rest} ->
  					P = cow_spdy:parse(Frame, Zinf),
  					handle_frame(State#state{buffer=Rest}, P);
  				false ->
  					loop(State#state{buffer=Data2})
  			end;
  		{Closed, Socket} ->
  			terminate(State);
  		{Error, Socket, _Reason} ->
  
negative.code: %% Ignore all other frames for now.
  handle_frame(State, Frame) ->
  	error_logger:error_msg("Ignored frame ~p", [Frame]),
  	State.
  
  cancel_recv_timeout(StreamID, TRef) ->
  	_ = erlang:cancel_timer(TRef),
  