anchor.diff:  %%% Internal functions
   %%%===================================================================
   
  +%% @private
  +-spec start_gs_client_worker() -> ok | error.
  +start_gs_client_worker() ->
  +    case supervisor:start_child(?GS_WORKER_SUP, gs_client_worker_spec()) of
  +        {ok, _} ->
  +            try
  +                case node_manager:get_cluster_status() of
  +                    {error, cluster_not_ready} ->
  +                        ?info("Deferring on-connect-to-oz procedures as the cluster is not ready yet");
  +                    {ok, _} ->
  +                        run_on_connect_to_oz_procedures()
  +                end,
  +                ok
  +            catch Type:Reason ->
  +                ?error_stacktrace(
  +                    "Failed to execute on-connect procedures, disconnecting - ~p:~p",
  +                    [Type, Reason]
  +                ),
  +                % Kill the connection to Onezone, which will cause a
  +                % connection retry during the next healthcheck
  +                gs_client_worker:force_terminate()
  +            end;
  +        {error, Error} ->
  +            ?error("Failed to start gs client worker supervisor child: ~p", [Error]),
  +            error
  +    end.
  +
   %%--------------------------------------------------------------------
   %% @private
   %% @doc
  
positive.code: %%% Internal services API
  %%%===================================================================
  
  -spec start_gs_client_worker() -> ok | no_return().
  start_gs_client_worker() ->
      case supervisor:start_child(?GS_WORKER_SUP, gs_client_worker_spec()) of
          {ok, _} ->
              try
                  case node_manager:get_cluster_status() of
                      {error, cluster_not_ready} ->
                          ?info("Deferring on-connect-to-oz procedures as the cluster is not ready yet");
                      {ok, _} ->
                          run_on_connect_to_oz_procedures()
                  end,
                  ok
              catch Type:Reason ->
                  ?error_stacktrace(
                      "Failed to execute on-connect procedures, disconnecting - ~p:~p",
                      [Type, Reason]
                  ),
                  % Kill the connection to Onezone, which will cause a
                  % connection retry during the next healthcheck
                  gs_client_worker:force_terminate()
              end;
          {error, Error} ->
              ?error("Failed to start gs client worker supervisor child: ~p", [Error]),
              ok % Ignore error - will be tried again during next healthcheck
      end.
  
  -spec stop_gs_client_worker() -> ok | no_return().
  stop_gs_client_worker() ->
  
negative.code:                 ?GS_RECONNECT_MAX_BACKOFF,
                  round(LastInterval * ?GS_RECONNECT_BACKOFF_RATE)
              ),
              ?info("Connection to Onezone is not alive - next Onezone connection attempt in ~B seconds.", [
                  Interval2 div 1000
              ]),
              {restart, Interval2}
  