public void ToObservable_DisposesEnumeratorOnCompletion() { var fail = false; var evt = new ManualResetEvent(false); var ae = AsyncEnumerable.Create( _ => AsyncEnumerator.Create <int>( () => new ValueTask <bool>(false), () => { throw new InvalidOperationException(); }, () => { evt.Set(); return(default); }));
protected static IAsyncEnumerable <TValue> Throw <TValue>(Exception exception) { if (exception == null) { throw new ArgumentNullException(nameof(exception)); } #if NO_TASK_FROMEXCEPTION var tcs = new TaskCompletionSource <bool>(); tcs.TrySetException(exception); var moveNextThrows = new ValueTask <bool>(tcs.Task); #else var moveNextThrows = new ValueTask <bool>(Task.FromException <bool>(exception)); #endif return(AsyncEnumerable.Create( _ => AsyncEnumerator.Create <TValue>( () => moveNextThrows, getCurrent: null, disposeAsync: null) )); }