anchor.diff:          end
       catch
           throw:{translation_failed, Reason, undefined} ->
  -            ?error("Client message decoding error - ~p", [Reason]),
  +            ?THROTTLE_ERROR(SessId, "Client message decoding error - ~p", [Reason]),
               {ok, State};
           throw:{translation_failed, Reason, MsgId} ->
  -            ?error("Client message decoding error - ~p", [Reason]),
  +            ?THROTTLE_ERROR(SessId, "Client message decoding error - ~p", [Reason]),
               InvalidArgErrorMsg = #server_message{
                   message_id = MsgId,
                   message_body = #status{code = ?EINVAL}
               },
               send_response(State, InvalidArgErrorMsg);
           Type:Reason ->
  -            ?error("Client message handling error - ~p:~p", [Type, Reason]),
  +            ?THROTTLE_ERROR(SessId, "Client message handling error - ~p:~p", [Type, Reason]),
               {ok, State}
       end.
   
  
positive.code: %%--------------------------------------------------------------------
  -spec terminate(Reason :: (normal | shutdown | {shutdown, term()} | term()),
      State :: state()) -> term().
  terminate(Reason, #state{session_id = SessionId, socket = Socket} = State) ->
      ?log_terminate(Reason, State),
  
      case SessionId of
          undefined -> ok;
          _ -> session_connections:deregister(SessionId, self())
      end,
      ssl:close(Socket),
      State.
  
negative.code: %% @private
  -spec send_response(state(), communicator:server_message()) ->
      {ok, state()} | error().
  send_response(#state{session_id = SessId} = State, ServerMsg) ->
      case send_server_message(State, ServerMsg) of
          {ok, _NewState} = Ans ->
              Ans;
  