/// <summary>
        /// Creates a subscription.
        /// </summary>
        /// <param name="subscription">Subscription to create.</param>
        /// <param name="state">Additional metadata to associate with the artifact. Implementations can interpret this value, or ignore it.</param>
        /// <param name="token">Token to observe for cancellation of the request.</param>
        /// <returns>Task to await the acknowledgement of the creation of the subscription, or an exception.</returns>
        protected override Task CreateSubscriptionAsyncCore(IAsyncReactiveQubscription subscription, object state, CancellationToken token)
        {
            if (subscription == null)
            {
                throw new ArgumentNullException(nameof(subscription));
            }

            if (!TryGetUriFromKnownResource(subscription, out Uri uri))
            {
                throw new InvalidOperationException("Unknown subscription object. Could not find a URI identity for the specified subscription object. Did you obtain the subscription object from SubscribeAsync or GetSubscription?");
            }

            return(_provider.CreateSubscriptionAsync(uri, subscription.Expression, state, token));
        }