anchor.diff:        }
         var c = (String path) {
           fileProgress.path = path;
  -        if (callback != null) {
  -          callback(path);
  -        }
  +        completer.complete(path);
  +
         };
         c(response.type == Response.RESPONSE_TYPE_SUCCESS ? response.payload : null);
       });
  +    return completer.future;
  +
     }
   
   
  
positive.code: 
    AJAXFileUploadStrategy() ;
  
    void uploadFile(FileProgress fileProgress, {void callback(String path):null, void progress(num pct):null}) {
      var formData = new FormData();
      formData.appendBlob("file", fileProgress.file, fileProgress.file.name);
      ajaxClient.callFunctionString("File.uploadFile(FILES['file'])", progress:progress, form_data:formData).then((JSONResponse response) {
  
negative.code:     sizesString += "]";
  
  
  
      ajaxClient.callFunctionString("ImageFile.uploadFile(FILES['file'], $sizesString )", progress:progress, form_data:form_data).then((JSONResponse response) {
        progress(1);
        var c = (String path) {
          fileProgress.path = path;
          completer.complete(path);
  
        };
        if (response.type == Response.RESPONSE_TYPE_SUCCESS) {
          fileProgress.previewPath = response.payload['sizes']['preview'];
  