anchor.diff:  %%  <dt>dispatch</dt><dd>The dispatch list for this protocol.</dd>
   %%  <dt>max_empty_lines</dt><dd>Max number of empty lines before a request.
   %%   Defaults to 5.</dd>
  +%%  <dt>max_header_name_length</dt><dd>Max length allowed for header names.
  +%%   Defaults to 64.</dd>
  +%%  <dt>max_header_value_length</dt><dd>Max length allowed for header values.
  +%%   Defaults to 4096.</dd>
  +%%  <dt>max_keepalive</dt><dd>Max number of requests allowed in a single
  +%%   keep-alive session. Defaults to infinity.</dd>
  +%%  <dt>max_request_line_length</dt><dd>Max length allowed for the request
  +%%   line. Defaults to 4096.</dd>
  +%%  <dt>onrequest</dt><dd>Optional fun that allows Req interaction before
  +%%   any dispatching is done. Host info, path info and bindings are thus
  +%%   not available at this point.</dd>
  +%%  <dt>onresponse</dt><dd>Optional fun that allows replacing a response
  +%%   sent by the application based on its status code or headers.</dd>
   %%  <dt>timeout</dt><dd>Time in milliseconds before an idle
   %%   connection is closed. Defaults to 5000 milliseconds.</dd>
   %% </dl>
  
positive.code: init(ListenerPid, Socket, Transport, Opts) ->
  	Dispatch = get_value(dispatch, Opts, []),
  	MaxEmptyLines = get_value(max_empty_lines, Opts, 5),
  	MaxKeepalive = get_value(max_keepalive, Opts, infinity),
  	MaxRequestLineLength = get_value(max_request_line_length, Opts, 4096),
  	MaxHeaderNameLength = get_value(max_header_name_length, Opts, 64),
  	MaxHeaderValueLength = get_value(max_header_value_length, Opts, 4096),
  	OnRequest = get_value(onrequest, Opts, undefined),
  	OnResponse = get_value(onresponse, Opts, undefined),
  	Timeout = get_value(timeout, Opts, 5000),
  
negative.code: 	TRef = erlang:start_timer(Timeout, self(), ?MODULE),
  	State#state{loop_timeout_ref=TRef}.
  
  %% @private
  -spec handler_loop(cowboy_req:req(), #state{}, module(), any()) -> ok.
  handler_loop(Req, State=#state{loop_timeout_ref=TRef}, Handler, HandlerState) ->
  	receive
  