protected virtual Task <bool> UploadPhotoItem(UploadRequest request)
 {
     return(base.ExecuteFunctionAsync("UploadPhotoItem", async delegate()
     {
         try
         {
             AmazonUploadInfo info = await PerformUploadPhotoToAmazon(request);
             if (info != null && info.Success)
             {
                 if (request.CancelRequested)
                 {
                     return false;
                 }
                 if (request.IsPreUpload)
                 {
                     return true;
                 }
                 return await PerformAddUploadedPhotoToApp(request, info);
             }
             return false;
         }
         catch (Exception ex)
         {
             base.LogError(ex, "UploadPhotoItem");
             return false;
         }
     }));
 }
 protected abstract Task <bool> PerformAddUploadedPhotoToApp(UploadRequest request, AmazonUploadInfo info);