anchor.diff:      },
       Logger = atm_workflow_execution_ctx:get_logger(AtmWorkflowExecutionCtx),
       atm_workflow_execution_logger:workflow_warning(LogContent, Logger).
  +
  +
  +%% @private
  +-spec await_function_removal(initiation_ctx(), non_neg_integer()) -> boolean().
  +await_function_removal(_InitiationCtx, 0) ->
  +    false;
  +
  +await_function_removal(InitiationCtx, RetriesLeft) ->
  +    case is_function_registered(InitiationCtx) of
  +        true ->
  +            assert_atm_workflow_execution_is_not_stopping(InitiationCtx),
  +            timer:sleep(timer:seconds(?AWAIT_INTERVAL_SEC)),
  +            await_function_removal(InitiationCtx, RetriesLeft - 1);
  +        false ->
  +            true
  +    end.
  
positive.code: -export_type([function_name/0]).
  
  
  -define(AWAIT_READINESS_RETRIES, 300).
  -define(AWAIT_READINESS_INTERVAL_SEC, 1).
  
  
  %%%===================================================================
  
negative.code:             log_function_ready(InitiationCtx);
          not_ready ->
              assert_atm_workflow_execution_is_not_stopping(InitiationCtx),
              timer:sleep(timer:seconds(?AWAIT_INTERVAL_SEC)),
              await_function_readiness(InitiationCtx, RetriesLeft - 1)
      end.
  
  