{"record":{"id":"38bcf3ca0a0b5075","repo":"dotnet/reactive","slug":"sequence-contains-no-elements","errorCode":null,"errorMessage":"Sequence contains no elements","messagePattern":"Sequence contains no elements","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"Rx.NET/Source/src/System.Reactive/Subjects/AsyncSubject.cs","lineNumber":434,"sourceCode":"        public T GetResult()\n        {\n            if (Volatile.Read(ref _observers) != Terminated)\n            {\n                using var e = new ManualResetEventSlim(initialState: false);\n\n                //\n                // [OK] Use of unsafe Subscribe: this type's Subscribe implementation is safe.\n                //\n                Subscribe/*Unsafe*/(new BlockingObserver(e));\n\n                e.Wait();\n            }\n\n            _exception?.Throw();\n\n            if (!_hasValue)\n            {\n                throw new InvalidOperationException(Strings_Linq.NO_ELEMENTS);\n            }\n\n            return _value!;\n        }\n\n        private sealed class BlockingObserver : IObserver<T>\n        {\n            private readonly ManualResetEventSlim _e;\n\n            public BlockingObserver(ManualResetEventSlim e) => _e = e;\n\n            public void OnCompleted() => Done();\n\n            public void OnError(Exception error) => Done();\n\n            public void OnNext(T value) { }\n\n            private void Done() => _e.Set();","sourceCodeStart":416,"sourceCodeEnd":452,"githubUrl":"https://github.com/dotnet/reactive/blob/94b5d5ab912789f5abe9a72138a25bbd716fe59c/Rx.NET/Source/src/System.Reactive/Subjects/AsyncSubject.cs#L416-L452","documentation":"AsyncSubject.GetResult (the task-like GetResult used by await and by blocking waiters) throws InvalidOperationException(\"Sequence contains no elements\") when the subject completed without ever producing a value and without an error. An AsyncSubject only yields a value if OnNext was called at least once before OnCompleted.","triggerScenarios":"Awaiting or calling GetResult on an AsyncSubject<T> that received OnCompleted with zero OnNext calls (or with only OnError, that path throws the stored exception instead).","commonSituations":"A source sequence that legitimately emitted nothing; a filtered/empty source; a race where GetResult runs before any value arrived but after completion flag read.","solutions":["Guard with await subject.FirstOrDefaultAsync() or use .DefaultIfEmpty() before awaiting.","Check subject.Has.Value pattern or subscribe with a default in your pipeline.","If empty results are valid, catch InvalidOperationException around GetResult/await.","Fix the upstream source so it emits at least one value before completion."],"exampleFix":"// before\nvar value = subject.GetResult();\n// after\nvar value = await subject.DefaultIfEmpty(defaultValue).FirstAsync();","handlingStrategy":"try-catch","validationCode":"var hasValue = await subject.AnyAsync();\nif (!hasValue) value = defaultValue; else value = await subject.FirstAsync();","typeGuard":null,"tryCatchPattern":"try { var value = subject.GetResult(); }\ncatch (InvalidOperationException) { var value = defaultValue; }","preventionTips":["Apply DefaultIfEmpty before awaiting an AsyncSubject.","Only await subjects guaranteed to receive at least one OnNext before completion."],"tags":["empty-sequence","rx","async-subject"],"backgroundTag":"empty-result-set","analyzedSha":"94b5d5ab912789f5abe9a72138a25bbd716fe59c","analyzedAt":"2026-09-15T02:26:24.759Z","contentChangedAt":"2026-09-15T02:26:24.759Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}