public async ValueTask QueueDeleteNoWaitAsync(string queueName, bool ifUnused = false, bool ifEmpty = false)
        {
            var info = new QueueDeleteInfo(queueName, ifUnused, ifEmpty, true);

            await SendQueueDelete(info).ConfigureAwait(false);

            _queues.Remove(queueName);
        }
        public async ValueTask <int> QueueDeleteAsync(string queueName, bool ifUnused = false, bool ifEmpty = false)
        {
            await _semafore.WaitAsync().ConfigureAwait(false);

            _purgeOrDeleteSrc = new TaskCompletionSource <int>();
            var info = new QueueDeleteInfo(queueName, ifUnused, ifEmpty, false);

            await SendQueueDelete(info).ConfigureAwait(false);

            var result = await _purgeOrDeleteSrc.Task.ConfigureAwait(false);

            _queues.Remove(queueName);
            _semafore.Release();
            return(result);
        }