anchor.diff:  
   %% @private
   -spec socket_send(state(), Data :: binary()) -> {ok, state()} | error().
  -socket_send(#state{transport = Transport, socket = Socket} = State, Data) ->
  +socket_send(#state{
  +    session_id = SessId, 
  +    transport = Transport, 
  +    socket = Socket
  +} = State, Data) ->
       case Transport:send(Socket, Data) of
           ok ->
               {ok, State};
           {error, Reason} = Error ->
  -            ?error_stacktrace("Unable to send message via socket ~p due to: ~p", [
  +            ?THROTTLE_ERROR(SessId, "Unable to send message via socket ~p due to: ~p", [
                   Socket, Reason
               ]),
               Error
  
positive.code: %% @private
  -spec send_server_message(state(), communicator:server_message()) ->
      {ok, state()} | error().
  send_server_message(#state{verify_msg = VerifyMsg} = State, ServerMsg) ->
      try
          {ok, Data} = clproto_serializer:serialize_server_message(ServerMsg, VerifyMsg),
          socket_send(State, Data)
      catch _:Reason ->
          ?error_stacktrace("Unable to serialize server_message ~s due to: ~p", [
              clproto_utils:msg_to_string(ServerMsg), Reason
          ]),
          {error, serialization_failed}
  
negative.code: handle_call({send_msg, _Msg}, _From, #state{status = Status, socket = Socket} = State) ->
      ?warning("Attempt to send msg via not ready connection ~p", [Socket]),
      {reply, {error, Status}, State, ?PROTO_CONNECTION_TIMEOUT};
  handle_call(?REBUILD_RIB_MSG, _From, #state{session_id = SessId} = State) ->
      {reply, ok, State#state{rib = router:build_rib(SessId)}, ?PROTO_CONNECTION_TIMEOUT};
  handle_call(_Request, _From, State) ->
      ?log_bad_request(_Request),
      {reply, {error, wrong_request}, State, ?PROTO_CONNECTION_TIMEOUT}.
  