anchor.diff:          end, Session1, lists:reverse(InflightQ)),
   
       %% Dequeue pending messages
  -    {noreply, dequeue(Session2), hibernate};
  +    noreply(dequeue(Session2));
   
   %% PUBRAC
   handle_cast({puback, PktId}, Session = #session{client_id = ClientId, awaiting_ack = Awaiting}) ->
  
positive.code:     lager:info("Session ~s unlink with client ~p: reason=~p",
                      [ClientId, ClientPid, Reason]),
      TRef = timer(Expires, session_expired),
      {noreply, Session#session{client_pid = undefined, expired_timer = TRef}, hibernate};
  
  handle_info({'EXIT', Pid, _Reason}, Session = #session{client_id = ClientId,
                                                       client_pid = ClientPid}) ->
                                                              
      lager:error("Session ~s received unexpected EXIT:"
                      " client_pid=~p, exit_pid=~p", [ClientId, ClientPid, Pid]),
  
negative.code:         {ok, {Msg, _TRef}} ->
              lager:error([{client, ClientId}], "Session ~s AwaitingRel Timout!~n"
                              "Drop Message:~p", [ClientId, Msg]),
              noreply(Session#session{awaiting_rel = maps:remove(PktId, AwaitingRel)});
          error ->
              lager:error([{client, ClientId}], "Session ~s Cannot find AwaitingRel: PktId=~p", [ClientId, PktId]),
              {noreply, Session}
  