diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskObservableExtensions.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskObservableExtensions.cs index 540395a..d54a5fd 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskObservableExtensions.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskObservableExtensions.cs @@ -74,16 +74,19 @@ namespace Cysharp.Threading.Tasks static async UniTaskVoid Fire(AsyncSubject subject, UniTask task) { + T value; try { - var value = await task; - subject.OnNext(value); - subject.OnCompleted(); + value = await task; } catch (Exception ex) { subject.OnError(ex); + return; } + + subject.OnNext(value); + subject.OnCompleted(); } static async UniTaskVoid Fire(AsyncSubject subject, UniTask task) @@ -91,13 +94,15 @@ namespace Cysharp.Threading.Tasks try { await task; - subject.OnNext(AsyncUnit.Default); - subject.OnCompleted(); } catch (Exception ex) { subject.OnError(ex); + return; } + + subject.OnNext(AsyncUnit.Default); + subject.OnCompleted(); } class ToUniTaskObserver : IObserver