anchor.diff:  	challenge = undefined :: undefined | binary(),
   	timeout = infinity :: timeout(),
   	messages = undefined :: undefined | {atom(), atom(), atom()},
  -	eop :: tuple()
  +	eop :: tuple(),
  +	hibernate = false :: boolean()
   }).
   
   -spec upgrade(module(), any(), #http_req{}) -> ok.
  
positive.code: 		 {<<"Sec-WebSocket-Location">>, Location},
  		 {<<"Sec-WebSocket-Origin">>, Origin}],
  		Challenge, Req#http_req{resp_state=waiting}),
  	handler_loop(State#state{messages=Transport:messages()},
  		Req2, HandlerState, <<>>).
  
  -spec websocket_location(atom(), binary(), inet:ip_port(), binary())
  
negative.code: websocket_data(State, Req, HandlerState, << 255, 0, _Rest/bits >>) ->
  	websocket_close(State, Req, HandlerState, {normal, closed});
  websocket_data(State, Req, HandlerState, <<>>) ->
  	handler_before_loop(State, Req, HandlerState, <<>>);
  websocket_data(State, Req, HandlerState, Data) ->
  	websocket_frame(State, Req, HandlerState, Data, binary:first(Data)).
  
  