anchor.diff:  	{[SwitchProtocol], State};
   %% Stray message.
   info(_StreamID, _Msg, State) ->
  +	%% @todo Error report.
   	%% @todo Cleanup if no reply was sent when stream ends.
   	{[], State}.
   
  
positive.code: 
  %% @todo proper specs
  -spec init(_,_,_) -> _.
  init(_StreamID, Req, Opts) ->
  	Env = maps:get(env, Opts, #{}),
  	Middlewares = maps:get(middlewares, Opts, [cowboy_router, cowboy_handler]),
  	Shutdown = maps:get(shutdown, Opts, 5000),
  	Pid = proc_lib:spawn_link(?MODULE, execute, [Req, Env, Middlewares]),
  	{[{spawn, Pid, Shutdown}], #state{pid=Pid}}.
  
  %% If we receive data and stream is waiting for data:
  %%	If we accumulated enough data or IsFin=fin, send it.
  
negative.code: -export([info/3]).
  -export([terminate/3]).
  
  -export([proc_lib_hack/3]).
  -export([execute/3]).
  -export([resume/5]).
  
  -record(state, {
  	ref = undefined :: ranch:ref(),
  	pid = undefined :: pid(),
  	read_body_ref = undefined :: reference(),
  	read_body_length = 0 :: non_neg_integer(),
  