public async Task<StorageSearchResult> Resolve(HttpResponseMessage response)
		{
			if(response == null)
				throw new ArgumentNullException("response");

			if(!response.IsSuccessStatusCode)
				return null;

			if(response.Content.Headers.ContentLength == null || response.Content.Headers.ContentLength < 1)
				return null;

			StorageSearchResult result = null;
			var contentStream = await response.Content.ReadAsStreamAsync();

			this.ResolveCore(contentStream, (bucketName, pattern, marker) =>
			{
				result = new StorageSearchResult(bucketName, pattern, marker, this);
				return result;
			});

			return result;
		}
		public string Reload(StorageSearchResult owner, HttpResponseMessage response)
		{
			if(owner == null)
				throw new ArgumentNullException("owner");

			if(response == null)
				throw new ArgumentNullException("response");

			if(!response.IsSuccessStatusCode)
				return null;

			if(response.Content.Headers.ContentLength == null || response.Content.Headers.ContentLength < 1)
				return null;

			return this.ResolveCore(response.Content.ReadAsStreamAsync().Result, (_, __, ___) => owner);
		}