anchor.diff:  				undefined -> ok;
   				_ -> State#?MODULE.client ! Complete
   			end,
  -			case State#?MODULE.alert of
  -				true -> {noreply, State#?MODULE{transactions=Rest}, hibernate};
  -				false -> {noreply, State#?MODULE{transactions=Rest}}
  -			end;
  +			noreply(State#?MODULE{transactions=Rest});
   		false ->
   			fubar_log:log(noise, ?MODULE, [ClientId, "unknown exit detected", Worker]),
  -			case State#?MODULE.alert of
  -				true -> {noreply, State, hibernate};
  -				false -> {noreply, State}
  -			end
  +			noreply(State)
   	end;
   handle_info({'EXIT', Worker, Reason}, State=#?MODULE{name=ClientId}) ->
   	% Likely to be a transaction failure signal.
   	case lists:keytake(Worker, 2, State#?MODULE.transactions) of
   		{value, {MessageId, Worker, _}, Rest} ->
   			fubar_log:log(warning, ?MODULE, [ClientId, "transaction failure", MessageId, Reason]),
  -			case State#?MODULE.alert of
  -				true -> {noreply, State#?MODULE{transactions=Rest}, hibernate};
  -				false -> {noreply, State#?MODULE{transactions=Rest}}
  -			end;
  +			noreply(State#?MODULE{transactions=Rest});
   		false ->
   			fubar_log:log(warning, ?MODULE, [ClientId, "unknown exit detected", Worker, Reason]),
  -			case State#?MODULE.alert of
  -				true -> {noreply, State, hibernate};
  -				false -> {noreply, State}
  -			end
  +			noreply(State)
   	end;
   
   %% Fallback
   handle_info(Info, State) ->
   	fubar_log:log(noise, ?MODULE, [State#?MODULE.name, "unknown info", Info]),
  -	case State#?MODULE.alert of
  -		true -> {noreply, State, hibernate};
  -		false -> {noreply, State}
  -	end.
  +	noreply(State).
   
   terminate(Reason, State=#?MODULE{name=ClientId, transaction_timeout=Timeout, trace=Trace}) ->
   	fubar_log:log(resource, ?MODULE, [ClientId, terminate, Reason]),
  
positive.code: 			Client ! Reply,
  			Fubar1 = fubar:set([{via, ClientId}, {payload, Reply}], Fubar),
  			{ok, Timer1} = timer:send_after(#?MODULE.retry_after*#?MODULE.max_retries, {retry, MessageId}),
  			NewState = State#?MODULE{retry_pool=[{MessageId, Fubar1, #?MODULE.max_retries, Timer1} | Pool]},
  			case State#?MODULE.alert of
  				true -> {noreply, NewState, hibernate};
  				false -> {noreply, NewState}
  			end;
  		false ->
  			fubar_log:log(warning, ?MODULE, [ClientId, "too late pubrec for", MessageId]),
  			case State#?MODULE.alert of
  				true -> {noreply, State, hibernate};
  				false -> {noreply, State}
  			end
  	end;
  handle_info(#mqtt_pubrel{message_id=MessageId}, State=#?MODULE{name=ClientId}) ->
  	case lists:keyfind(MessageId, 1, State#?MODULE.transactions) of
  		false ->
  			fubar_log:log(warning, ?MODULE, [ClientId, "too late pubrel for", MessageId]),
  			case State#?MODULE.alert of
  				true -> {noreply, State, hibernate};
  				false -> {noreply, State}
  			end;
  		{MessageId, Worker, _} ->
  			Worker ! release,
  			case State#?MODULE.alert of
  				true -> {noreply, State, hibernate};
  				false -> {noreply, State}
  			end
  	end;
  handle_info(#mqtt_pubcomp{message_id=MessageId}, State=#?MODULE{name=ClientId}) ->
  	% The message id is supposed to be in the retry pool.
  
negative.code: 		{value, {MessageId, Fubar, _, Timer}, Pool} ->
  			timer:cancel(Timer),
  			fubar_log:trace(ClientId, Fubar),
  			noreply(State#?MODULE{retry_pool=Pool});
  		false ->
  			fubar_log:log(warning, ?MODULE, [ClientId, "too late puback for", MessageId]),
  			noreply(State)
  	end;
  handle_info(#mqtt_pubrec{message_id=MessageId}, State=#?MODULE{name=ClientId, client=Client}) ->
  	% The message id is supposed to be in the retry pool.
  