async Task CreateSubscription(NamespaceManager rootNamespaceManager, NamespaceManager namespaceManager, TopicSubscriptionSettings settings)
        {
            var topicDescription = await rootNamespaceManager.CreateTopicSafeAsync(settings.Topic);

            string queuePath = Path.Combine(namespaceManager.Address.AbsoluteUri.TrimStart('/'), _settings.QueueDescription.Path)
                               .Replace('\\', '/');

            var subscriptionName = GetSubscriptionName(namespaceManager, _settings.QueueDescription.Path);

            await rootNamespaceManager.CreateTopicSubscriptionSafeAsync(subscriptionName, topicDescription.Path, queuePath);
        }
        async Task <Func <Task> > CreateSubscription(NamespaceContext context, NamespaceManager namespaceManager, TopicSubscriptionSettings settings)
        {
            var topicDescription = await context.CreateTopic(settings.Topic).ConfigureAwait(false);

            var queuePath = Path.Combine(namespaceManager.Address.AbsoluteUri.TrimStart('/'), _settings.QueueDescription.Path)
                            .Replace('\\', '/');

            var subscriptionName = GetSubscriptionName(namespaceManager, _settings.QueueDescription.Path);

            var description =
                await context.CreateTopicSubscription(subscriptionName, topicDescription.Path, queuePath, _settings.QueueDescription).ConfigureAwait(false);

            return(() => DeleteSubscription(context, description));
        }