anchor.diff:  % for QOS 1, they must send back a PUBACK message
   % for QOS 2, they must send back a PUBREC, then latter on a PUBCOMP
   %
  -
  +% From = subscriber responding PUBREC to PUBLISH
  +%
   waitacks({provreq, From, Msg=#mqtt_msg{payload=P}}, State=#state{inflight=Inflight}) ->
       lager:debug("received provisional response from ~p: ~p", [From, Msg]),
   
  
positive.code:     end.
  
  % qos=2
  provisional({provresp, From, Msg=#mqtt_msg{type='PUBREL', payload=P}}, 
              State=#state{publisher=Pub, message=PubMsg, subscribers=Subscribers}) ->
      lager:debug("provisional state: received provisional response ~p", [Msg]),
  
negative.code:             % send PUBCOMP immediately
              MsgID   = proplists:get_value(msgid, P),
              send(ack, From, MsgID, 2),
  
              {stop, normal, State};
  
  