/// <summary>
        /// Asynchronously attempts to create a resource for the specified source repository.
        /// </summary>
        /// <param name="source">A source repository.</param>
        /// <param name="cancellationToken">A cancellation token.</param>
        /// <returns>A task that represents the asynchronous operation.
        /// The task result (<see cref="Task{TResult}.Result" />) returns a Tuple&lt;bool, INuGetResource&gt;</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="source"/> is <c>null</c>.</exception>
        /// <exception cref="OperationCanceledException">Thrown if <paramref name="cancellationToken"/>
        /// is cancelled.</exception>
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(
            SourceRepository source,
            CancellationToken cancellationToken)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            cancellationToken.ThrowIfCancellationRequested();

            PluginResource resource = null;

            var pluginCreationResults = await _pluginManager.CreatePluginsAsync(source, cancellationToken);

            if (pluginCreationResults != null && pluginCreationResults.Any())
            {
                resource = new PluginResource(
                    pluginCreationResults,
                    source.PackageSource,
                    HttpHandlerResourceV3.CredentialService?.Value);
            }

            return(new Tuple <bool, INuGetResource>(resource != null, resource));
        }