From 2b9086b374e4e311dadb351f4d6c00b1f09808bc Mon Sep 17 00:00:00 2001 From: Alejandro Jimenez Date: Fri, 22 May 2026 13:15:34 +0200 Subject: [PATCH 1/2] fix: catch canceled exceptions when Teleporting --- .../DCL/SceneLoadingScreens/LoadingScreen/LoadingScreen.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Explorer/Assets/DCL/SceneLoadingScreens/LoadingScreen/LoadingScreen.cs b/Explorer/Assets/DCL/SceneLoadingScreens/LoadingScreen/LoadingScreen.cs index 5aec6d8f755..d8cf87ea4c1 100644 --- a/Explorer/Assets/DCL/SceneLoadingScreens/LoadingScreen/LoadingScreen.cs +++ b/Explorer/Assets/DCL/SceneLoadingScreens/LoadingScreen/LoadingScreen.cs @@ -46,7 +46,12 @@ async UniTask ExecuteTimeOutOrCancelledAsync() async UniTask> ExecuteOperationAsync() { EnumResult result = await operation(loadReport, timeOut.Token); - loadReport.SetResult(result.AsResult()); + + if (result.Error?.State is TaskError.Cancelled) + loadReport.SetCancelled(); + else + loadReport.SetResult(result.AsResult()); + return result; } From 7fa76f0bc5ba829da2ffb9ff12dffc7cb4d4828d Mon Sep 17 00:00:00 2001 From: Alejandro Jimenez Date: Wed, 3 Jun 2026 10:37:17 +0200 Subject: [PATCH 2/2] fix: tests --- .../DCL/SceneLoadingScreens/Tests/LoadingScreenShould.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Explorer/Assets/DCL/SceneLoadingScreens/Tests/LoadingScreenShould.cs b/Explorer/Assets/DCL/SceneLoadingScreens/Tests/LoadingScreenShould.cs index 5ca1371e96e..06fe5f0a3c9 100644 --- a/Explorer/Assets/DCL/SceneLoadingScreens/Tests/LoadingScreenShould.cs +++ b/Explorer/Assets/DCL/SceneLoadingScreens/Tests/LoadingScreenShould.cs @@ -62,7 +62,12 @@ async UniTask> CreateOp(AsyncLoadProcessReport report, Can Assert.AreEqual(result, finalRes); // Report must be modified by the loading screen - Assert.That(outerReport!.GetStatus().TaskStatus, result.Success ? Is.EqualTo(UniTaskStatus.Succeeded) : Is.EqualTo(UniTaskStatus.Faulted)); + UniTaskStatus expectedStatus = + result.Success ? UniTaskStatus.Succeeded + : result.Error?.State == TaskError.Cancelled ? UniTaskStatus.Canceled + : UniTaskStatus.Faulted; + + Assert.That(outerReport!.GetStatus().TaskStatus, Is.EqualTo(expectedStatus)); } [Test] @@ -129,7 +134,7 @@ async UniTask> CreateOp(AsyncLoadProcessReport report, Can Assert.IsTrue(opCancellation.IsCancellationRequested); Assert.That(result.Error!.Value.State, Is.EqualTo(TaskError.Timeout)); - Assert.That(outerReport!.GetStatus().TaskStatus, Is.EqualTo(UniTaskStatus.Faulted)); + Assert.That(outerReport!.GetStatus().TaskStatus, Is.EqualTo(UniTaskStatus.Canceled)); } [Test]