anchor.diff:  			next(Req2, State#state{handler_state=HandlerState}, OnFalse)
   	end.
   
  -call(Req, #state{handler=Handler, handler_state=HandlerState}, Fun) ->
  -	case erlang:function_exported(Handler, Fun, 2) of
  -		true -> Handler:Fun(Req, HandlerState);
  +call(Req, State=#state{handler=Handler, handler_state=HandlerState},
  +		Callback) ->
  +	case erlang:function_exported(Handler, Callback, 2) of
  +		true ->
  +			try
  +				Handler:Callback(Req, HandlerState)
  +			catch Class:Reason ->
  +				error_logger:error_msg(
  +					"** Cowboy handler ~p terminating in ~p/~p~n"
  +					"   for the reason ~p:~p~n** Handler state was ~p~n"
  +					"** Request was ~p~n** Stacktrace: ~p~n~n",
  +					[Handler, Callback, 2, Class, Reason, HandlerState,
  +						cowboy_req:to_list(Req), erlang:get_stacktrace()]),
  +				error_terminate(Req, State)
  +			end;
  +		false ->
  +			no_call
  +	end.
  +
  +unsafe_call(Req, #state{handler=Handler, handler_state=HandlerState},
  +		Callback) ->
  +	case erlang:function_exported(Handler, Callback, 2) of
  +		true -> Handler:Callback(Req, HandlerState);
   		false -> no_call
   	end.
   
  
positive.code: 
  %% If LastModified is the atom 'no_call', we continue.
  if_unmodified_since(Req, State, IfUnmodifiedSince) ->
  	{LastModified, Req2, State2} = last_modified(Req, State),
  	case LastModified > IfUnmodifiedSince of
  		true -> precondition_failed(Req2, State2);
  		false -> if_none_match_exists(Req2, State2)
  	end.
  
  if_none_match_exists(Req, State) ->
  
negative.code: 	end.
  
  if_none_match(Req, State, EtagsList) ->
  	try generate_etag(Req, State) of
  		{Etag, Req2, State2} ->
  			case Etag of
  				undefined ->
  					precondition_failed(Req2, State2);
  				Etag ->
  					case lists:member(Etag, EtagsList) of
  						true -> precondition_is_head_get(Req2, State2);
  						false -> if_modified_since_exists(Req2, State2)
  					end
  			end
  	catch Class:Reason ->
  		error_logger:error_msg(
  			"** Cowboy handler ~p terminating in ~p/~p~n"
  			"   for the reason ~p:~p~n** Handler state was ~p~n"
  			"** Request was ~p~n** Stacktrace: ~p~n~n",
  			[State#state.handler, generate_etag, 2,
  				Class, Reason, State#state.handler_state,
  				cowboy_req:to_list(Req), erlang:get_stacktrace()]),
  		error_terminate(Req, State)
  	end.
  
  precondition_is_head_get(Req, State=#state{method=Method})
  