anchor.diff:  
       {ok, Ret};
   
  -decode_payload('SUBSCRIBE', _Qos, {_Len, <<MsgID:16, Payload/binary>>}) ->
  +decode_payload('SUBSCRIBE', _, {_Len, <<MsgID:16, Payload/binary>>}) ->
       lager:debug("SUBSCRIBE v3.1 ~p", [MsgID]),
       case MsgID of
           0 -> erlang:throw({'SUBSCRIBE', "2.3.1-1", "null msgid"});
  
positive.code: %% @doc «CONNECT» message
  %% support both MQTT 3.1 and 3.1.1 versions
  %%
  -spec decode_payload(mqtt_verb(), integer(), {integer(), binary()}) -> {error, 
                                                                          disconnect|conformity|protocol_version}
                                                                         | {ok, list({atom(), any()})}.
  decode_payload('CONNECT', _Qos, {_Len, <<
          PLen:16,
          Protocol:PLen/binary,
          Version:8/integer,
  
negative.code:     lager:debug("CONNACK"),
      {ok, [{retcode, RetCode}]};
  
  decode_payload('PUBACK', _, {_Len=2, <<MsgID:16>>}) ->
      lager:debug("PUBACK. MsgID= ~p", [MsgID]),
      {ok, [{msgid, MsgID}]};
  
  decode_payload('PUBREC', _, {_Len, <<MsgID:16>>}) ->
      lager:debug("PUBREC. MsgID= ~p", [MsgID]),
      {ok, [{msgid, MsgID}]};
  
  % TODO: throw exception with custom message when 'PUBREL' and qos != 1
  decode_payload('PUBREL', {_, _Qos=1, _}, {_Len, <<MsgID:16>>}) ->
      lager:debug("PUBREL. MsgID= ~p", [MsgID]),
      {ok, [{msgid, MsgID}]};
  
  decode_payload('PUBCOMP', _, {_Len, <<MsgID:16>>}) ->
      lager:debug("PUBREL. MsgID= ~p", [MsgID]),
      {ok, [{msgid, MsgID}]};
  
  