비동기로 토큰로그인을 하는데 순서가 이상하게 꼬입니다.

매번 그러는 것은 아니고 안드로이드에 올려서 테스트 할 시 원인이 무엇인지는 모르겠으나 순서가 꼬입니다.
상황을 말씀드리곘습니다. 먼저 코드입니다.

    public void TouchStart()
    {
        loadingIcon.SetActive(true);
        BackEndServerManager.Instance.BackendTokenLogin((bool result, string error) =>
        {
            Dispatcher.Instance.BeginInvoke(() =>
            {
                if (result)
                {
                    mmLoadScene.LoadScene();
                    return;
                }
                loadingIcon.SetActive(false);
                if (!error.Equals(string.Empty))
                {
                    errorText.text = "유저 정보 불러오기 실패\n\n" + error;
                    errorObject.SetActive(true);
                    return;
                }
                _popupManager.DisplayPopup("LoginPopup");
            });
        });
    }
  1. 유효한 액세스토큰이 있는 상황에서 위 함수를 실행합니다.
  2. _popupManager.DisplayPopup(“LoginPopup”); 코드가 LoginPopup을 띄우는 유일한 코드입니다.
  3. 간헐적으로, 토큰로그인 실패시 동작인 LoginPopup 이 뜨고난 후에 로그인이 성공되어 다음 씬으로 넘어가기가 실행됩니다.

비동기로 콜백에서 result가 false일때만 동작할 수 있는 LoginPopup 실행 코드가 어쨰서 로그인 성공과 동시에 일어날 수 있는지 이해가 가지 않습니다.
조언 부탁드립니다 ㅠ_ㅠ…

[참고]
뒤끝에서 제공하는 BackEndMatch의 BackEndServerManager 코드를 사용중입니다.
위에서 사용하는 BackendTokenLogin 함수는 아래와 같습니다.

    public void BackendTokenLogin(Action<bool, string> func)
    {
        BackendAsyncClass.BackendAsync(Backend.BMember.LoginWithTheBackendTokenAsync, callback =>
        {
            if (callback.IsSuccess())
            {
                Debug.Log("토큰 로그인 성공");
                tokenInfo = callback;
                isSuccess = true;
                isUpdateNickName = false;
                loginSuccessFunc = func;
                return;
            }

            Debug.Log("토큰 로그인 실패\n" + callback.ToString());
            func(false, string.Empty);
        });
    }

안녕하세요 개발자님
올려주신 내용으로 유추해보기에는 loginSuccessFunc 이란 함수를 Update문에서 호출하고 계시는 것으로 보이는데
로그인 성공/실패 이후 해당 대리자를 null로 초기화 하면 해당 현상이 개선될 것 같습니다.

또한 현재 로그인 루틴이 좀 복잡하신 것 같은데요 (람다문 2중 호출)
BackendTokenLogin 에서 선언하시는 람다문은 LoginWithTheBackendTokenAsync 함수의 람다문 으로 통합을 하실 수 있을 것 같습니다.
(LoginWithTheBackendTokenAsync의 람다문 내에서 디스패치 호출 등)

2중으로 호출되고 있는 구조를 단순화 하시면 디버깅하실 때 도움이 되실 것 같습니다.