public async Task WaitForEmpty()

in src/DotPulsar/Internal/AsyncQueueWithCursor.cs [222:246]


    public async Task WaitForEmpty(CancellationToken cancellationToken)
    {
        TaskCompletionSource<object> tcs;
        CancellationTokenRegistration registration;
        lock (_queue)
        {
            ThrowIfDisposed();

            if (_queue.Count == 0)
                return;

            tcs = new TaskCompletionSource<object>();
            registration = cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken));
            _queueEmptyTcs.Add(tcs);
        }

        try
        {
            await tcs.Task.ConfigureAwait(false);
        }
        finally
        {
            registration.Dispose();
        }
    }