public async Task <StatisticsReport> Load(string name)
        {
            //  In NuGet we always use lowercase names for all blobs in Azure Storage
            name = name.ToLowerInvariant();

            string connectionString = _connectionString;

            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
            CloudBlobClient     blobClient     = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer  container      = blobClient.GetContainerReference("stats");
            CloudBlockBlob      blob           = container.GetBlockBlobReference("popularity/" + name);

            MemoryStream stream = new MemoryStream();

            await Task.Factory.FromAsync(blob.BeginFetchAttributes(null, null), blob.EndFetchAttributes);

            await Task.Factory.FromAsync(blob.BeginDownloadToStream(stream, null, null), blob.EndDownloadToStream);

            stream.Seek(0, SeekOrigin.Begin);

            string content;

            using (TextReader reader = new StreamReader(stream))
            {
                content = reader.ReadToEnd();
            }

            return(new StatisticsReport(content, (blob.Properties.LastModified == null ? (DateTime?)null : blob.Properties.LastModified.Value.UtcDateTime)));
        }