/// <summary>
        /// Creates a queue with the given parameters.
        /// </summary>
        /// <param name="queueName">Name of the queue.</param>
        /// <param name="queueSettings">Parameters of the queue.</param>
        /// <returns>Created queue.</returns>
        IAsyncOperation<QueueInfo> IServiceBusService.CreateQueueAsync(string queueName, QueueSettings queueSettings)
        {
            if (queueName == null)
            {
                throw new ArgumentNullException("queueName");
            }
            if (queueSettings == null)
            {
                throw new ArgumentNullException("queueSettings");
            }

            return CreateQueueAsync(queueName, queueSettings);
        }
        /// <summary>
        /// Creates a queue with the given parameters.
        /// </summary>
        /// <param name="queueName">Name of the queue.</param>
        /// <param name="queueSettings">Parameters of the queue.</param>
        /// <returns>Created queue.</returns>
        IAsyncOperation<QueueInfo> CreateQueueAsync(string queueName, QueueSettings queueSettings)
        {
            Uri uri = new Uri(ServiceConfig.ServiceBusUri, queueName);
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, uri);

            return Task.Factory
                .StartNew(() => SetBody(request, queueSettings))
                .ContinueWith<HttpResponseMessage>(tr => { return Channel.SendAsync(request).Result; }, TaskContinuationOptions.OnlyOnRanToCompletion)
                .ContinueWith<QueueInfo>(tr => { return GetQueue(tr.Result); }, TaskContinuationOptions.OnlyOnRanToCompletion)
                .AsAsyncOperation<QueueInfo>();
        }