/// <inheritdoc />
        public override async Task TerminateAsync(CancellationToken cancellationToken)
        {
            if (_socketClient.IsClosed)
            {
                return;
            }

            await _sender
            .CommitAsync(x => x.WriteTerminateMessage(), cancellationToken)
            .ConfigureAwait(false);

            await _receiver.Stop().ConfigureAwait(false);
        }