public CoroutineTaskWrapper(Func <Task> task)
        {
            source = new TaskCompletionSource <object>();

            AsyncSystem.StartOnWorkerThread(async() =>
            {
                try
                {
                    await task();
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }

                source.SetResult(null);
            });
        }
 public void OnCompleted(Action continuation) => AsyncSystem.StartOnWorkerThread(continuation);