public async Task StopAsync(CancellationToken cancellationToken)
        {
            ThrowIfDisposed();

            if (!_started)
            {
                throw new InvalidOperationException(
                          "The listener has not yet been started or has already been stopped.");
            }

            _cancellationTokenSource.Cancel();

            await _receiver.CloseAsync();

            _receiver = null;
            _started  = false;
        }