anchor.diff:  	case call(Req, State, Callback) of
   		no_call ->
   			next(Req, State, OnTrue);
  -		{stop, Req2, HandlerState} ->
  -			terminate(Req2, State#state{handler_state=HandlerState});
  -		{Switch, Req2, HandlerState} when element(1, Switch) =:= switch_handler ->
  -			switch_handler(Switch, Req2, HandlerState);
  -		{Expected, Req2, HandlerState} ->
  -			next(Req2, State#state{handler_state=HandlerState}, OnTrue);
  -		{_Unexpected, Req2, HandlerState} ->
  -			next(Req2, State#state{handler_state=HandlerState}, OnFalse)
  -	end.
  -
  -call(Req, State=#state{handler=Handler, handler_state=HandlerState},
  -		Callback) ->
  +		{stop, Req2, State2} ->
  +			terminate(Req2, State2);
  +		{Switch, Req2, State2} when element(1, Switch) =:= switch_handler ->
  +			switch_handler(Switch, Req2, State2);
  +		{Expected, Req2, State2} ->
  +			next(Req2, State2, OnTrue);
  +		{_Unexpected, Req2, State2} ->
  +			next(Req2, State2, OnFalse)
  +	end.
  +
  +call(Req0, State=#state{handler=Handler,
  +		handler_state=HandlerState0}, Callback) ->
   	case erlang:function_exported(Handler, Callback, 2) of
   		true ->
  -			try
  -				Handler:Callback(Req, HandlerState)
  +			try Handler:Callback(Req0, HandlerState0) of
  +				no_call ->
  +					no_call;
  +				{Result, Req, HandlerState} ->
  +					{Result, Req, State#state{handler_state=HandlerState}}
   			catch Class:Reason ->
  -				error_terminate(Req, State, Class, Reason)
  +				error_terminate(Req0, State, Class, Reason)
   			end;
   		false ->
   			no_call
   	end.
   
  -unsafe_call(Req, #state{handler=Handler, handler_state=HandlerState},
  -		Callback) ->
  +unsafe_call(Req0, State=#state{handler=Handler,
  +		handler_state=HandlerState0}, Callback) ->
   	case erlang:function_exported(Handler, Callback, 2) of
  -		true -> Handler:Callback(Req, HandlerState);
  -		false -> no_call
  +		false ->
  +			no_call;
  +		true ->
  +			case Handler:Callback(Req0, HandlerState0) of
  +				no_call ->
  +					no_call;
  +				{Result, Req, HandlerState} ->
  +					{Result, Req, State#state{handler_state=HandlerState}}
  +			end
   	end.
   
   next(Req, State, Next) when is_function(Next) ->
  
positive.code: 				no_call ->
  					languages_provided(Req#{media_type => {TP, STP, Params_A0}},
  						State#state{content_type_a=Provided});
  				{stop, Req2, HandlerState} ->
  					terminate(Req2, State#state{handler_state=HandlerState});
  				{Switch, Req2, HandlerState} when element(1, Switch) =:= switch_handler ->
  					switch_handler(Switch, Req2, HandlerState);
  				{CP, Req2, HandlerState} ->
  					State2 = State#state{handler_state=HandlerState, charsets_p=CP},
  					case lists:member(Charset, CP) of
  						false ->
  							match_media_type(Req2, State2, Accept, Tail, MediaType);
  						true ->
  							languages_provided(Req2#{media_type => {TP, STP, Params_A}},
  								State2#state{content_type_a=Provided,
  									charset_a=Charset})
  					end
  			end;
  
negative.code: 	case unsafe_call(Req, State, variances) of
  		no_call ->
  			{Variances, Req, State};
  		{HandlerVariances, Req2, State2} ->
  			{Variances ++ HandlerVariances, Req2, State2}
  	end.
  
  resource_exists(Req, State) ->
  