static UnityCoroutineScheduler GetVoidAwaiter(object instruction)
        {
            var awaiter = new UnityCoroutineScheduler();

            UnitySchedulerProvider.RunOnUnityScheduler(() => CoroutinePerformer.Instance.StartCoroutine(ReturnVoid(awaiter, instruction)));
            return(awaiter);
        }
        public static UnityCoroutineScheduler <AssetBundle> GetAwaiter(this AssetBundleCreateRequest request)
        {
            var awaiter = new UnityCoroutineScheduler <AssetBundle>();

            UnitySchedulerProvider.RunOnUnityScheduler(() => CoroutinePerformer.Instance.StartCoroutine(AssetBundleCreateRequest(awaiter, request)));
            return(awaiter);
        }
        public static UnityCoroutineScheduler <Object> GetAwaiter(this ResourceRequest request)
        {
            var awaiter = new UnityCoroutineScheduler <Object>();

            UnitySchedulerProvider.RunOnUnityScheduler(() => CoroutinePerformer.Instance.StartCoroutine(ResourceRequest(awaiter, request)));
            return(awaiter);
        }
        public void Complete(T result, Exception e)
        {
            ConditionHelper.Assert(!IsCompleted);

            IsCompleted = true;
            exception   = e;
            this.result = result;

            if (continueWith != null)
            {
                UnitySchedulerProvider.RunOnUnityScheduler(continueWith);
            }
        }