diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/AltTask/Awaitable.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/AltTask/Awaitable.cs index 802ce2322..545082372 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/AltTask/Awaitable.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/AltTask/Awaitable.cs @@ -78,15 +78,17 @@ namespace UniGLTF.AltTask public Awaitable(Task task) { - if (task.IsFaulted) - { - throw task.Exception; - } _task = task; + if (_task.Exception != null) + { + throw _task.Exception; + } } public bool IsCompleted => _task.IsCompleted; + public Exception Exception => _task.Exception; + public IAwaiter GetAwaiter() { return new Awaiter(this); @@ -130,6 +132,10 @@ namespace UniGLTF.AltTask public void GetResult() { + if (m_task.Exception != null) + { + throw m_task.Exception; + } } public void OnCompleted(Action continuation) diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/AltTask/GenericAwaitable.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/AltTask/GenericAwaitable.cs index 8b4c51bbe..87326a28f 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/AltTask/GenericAwaitable.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/AltTask/GenericAwaitable.cs @@ -70,11 +70,15 @@ namespace UniGLTF.AltTask public Awaitable(Task task) { _task = task; + if (_task.Exception != null) + { + throw _task.Exception; + } } - public bool IsCompleted => _task.IsCompleted; public T Result => _task.Result; + public Exception Exception => _task.Exception; public IAwaiter GetAwaiter() { @@ -110,6 +114,10 @@ namespace UniGLTF.AltTask public T GetResult() { + if (m_task.Exception != null) + { + throw m_task.Exception; + } return m_task.Result; }