diff --git a/src/PatternKit.Core/Behavioral/Iterator/AsyncFlow.cs b/src/PatternKit.Core/Behavioral/Iterator/AsyncFlow.cs index a713b64..ff2d91c 100644 --- a/src/PatternKit.Core/Behavioral/Iterator/AsyncFlow.cs +++ b/src/PatternKit.Core/Behavioral/Iterator/AsyncFlow.cs @@ -163,7 +163,13 @@ public async ValueTask TryGetAsync(int index, CancellationToken ct) using var reg = ct.Register(static s => ((TaskCompletionSource)s!).TrySetCanceled(), waiter); var signaled = await waiter.Task.ConfigureAwait(false); if (!signaled) + { + lock (_sync) + { + _waiters.Remove(waiter); + } return false; + } } }