internal void AddOnCanceled(Action onCanceled)
{
if (onCanceled is null)
{
ThrowHelper.ArgNull(nameof(onCanceled));
}
if (IsCompleted)
{
ThrowHelper.InvalidOp("Coroutine is already completed");
}
if (IsCanceled)
{
onCanceled.Invoke();
return;
}
var runner = ICoroutineRunner.GetContext();
if (Runner == runner)
{
OnCalceled += onCanceled;
}
else
{
OnCalceled += () => runner.Context(onCanceled);
}
}