diff --git a/src/StrawberryShake/Client/src/Core/OperationExecutor.Observable.cs b/src/StrawberryShake/Client/src/Core/OperationExecutor.Observable.cs index d36211d0eef..d199b651c0a 100644 --- a/src/StrawberryShake/Client/src/Core/OperationExecutor.Observable.cs +++ b/src/StrawberryShake/Client/src/Core/OperationExecutor.Observable.cs @@ -91,12 +91,19 @@ private async Task ExecuteAsync( result = resultBuilder.Build(response); } + if (result.IsErrorResult()) + { + observer.OnNext(result); + break; + } + // Emit the result, if it isn't a duplicate if (!Equals(result.Data, lastEmittedResult?.Data)) { observer.OnNext(result); lastEmittedResult = result; } + _operationStore.Set(_request, result); } diff --git a/src/StrawberryShake/Client/src/Core/StorelessOperationExecutor.Observable.cs b/src/StrawberryShake/Client/src/Core/StorelessOperationExecutor.Observable.cs index 72db6b261b1..a64db391fc3 100644 --- a/src/StrawberryShake/Client/src/Core/StorelessOperationExecutor.Observable.cs +++ b/src/StrawberryShake/Client/src/Core/StorelessOperationExecutor.Observable.cs @@ -49,7 +49,12 @@ private async Task ExecuteAsync( return; } - observer.OnNext(resultBuilder.Build(response)); + var result = resultBuilder.Build(response); + observer.OnNext(result); + if (result.IsErrorResult()) + { + break; + } } } catch (Exception ex)