anchor.diff:  
       mqtt_message_worker:provisional(response, Worker, self(), Msg),
   
  -    {reply, undefined, connected, StateData, round(Ka*1.5)};
  +    {reply, undefined, connected, StateData, Ka};
   
   connected(Msg=#mqtt_msg{type='PUBCOMP', payload=P}, _, StateData=#session{keepalive=Ka,inflight=Inflight}) ->
       MsgID  = proplists:get_value(msgid, P),
  
positive.code:     end,
  
      Resp = #mqtt_msg{type='CONNACK', payload=[{retcode, Retcode}]},
      {reply, Resp, NextState, StateData#session{deviceid=DeviceID, keepalive=KeepAlive, opts=Vals, topics=Topics}, round(KeepAlive*1.5)};
  initiate(#mqtt_msg{}, _, _StateData) ->
  	% close socket
  	{stop, disconnect, []};
  
negative.code:     {ok, MsgWorker} = mqtt_message_worker:start_link(),
      mqtt_message_worker:publish(MsgWorker, self(), Msg), % async
  
      {reply, undefined, connected, StateData, Ka};
  
  % qos > 0
  connected(Msg=#mqtt_msg{type='PUBLISH', payload=P}, _,
  