private async void Watch()

in src/DotPulsar/Internal/PingPongHandler.cs [56:82]


    private async void Watch()
    {
        var waitFor = _keepAliveInterval;

        while (!_cts.IsCancellationRequested)
        {
            await Task.Delay(waitFor).ConfigureAwait(false);
            var elapsed = GetElapsedTimeSinceLastCommand();
            if (elapsed > _keepAliveInterval)
            {
                if (_waitForPong)
                {
                    _stateManager.SetState(PingPongHandlerState.TimedOut);
                    return;
                }

                _waitForPong = true;
                _stateManager.SetState(PingPongHandlerState.ThresholdExceeded);
                waitFor = _keepAliveInterval;
            }
            else
            {
                _stateManager.SetState(PingPongHandlerState.Active);
                waitFor = _keepAliveInterval.Subtract(elapsed);
            }
        }
    }