From 62ca0c6e92d55680b2d6008470bf3a8d87f7159e Mon Sep 17 00:00:00 2001 From: neuecc Date: Thu, 3 Mar 2022 07:40:28 +0900 Subject: [PATCH] Fix IObservable.ToUniTask does not propagate unobserved exception --- .../Runtime/UniTaskObservableExtensions.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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