client/js/s3/uploader.basic.js
function(keynameFunc, id, successCallback, failureCallback) {
            var self = this,
                onSuccess = function(keyname) {
                    successCallback(keyname);
                },
                onFailure = function(reason) {
                    self.log(qq.format("Failed to retrieve key name for {}.  Reason: {}", id, reason || "null"), "error");
                    failureCallback(reason);
                },
                keyname = keynameFunc.call(this, id);

            if (qq.isGenericPromise(keyname)) {
                keyname.then(onSuccess, onFailure);
            }
            /*jshint -W116*/
            else if (keyname == null) {
                onFailure();
            }
            else {
                onSuccess(keyname);
            }
        }
function(keynameFunc, id, successCallback, failureCallback) {
            var self = this,
                onSuccess = function(keyname) {
                    successCallback(keyname);
                },
                onFailure = function(reason) {
                    self.log(qq.format("Failed to retrieve key name for {}.  Reason: {}", id, reason || "null"), "error");
                    failureCallback(reason);
                },
                keyname = keynameFunc.call(this, id);

            if (qq.isGenericPromise(keyname)) {
                keyname.then(onSuccess, onFailure);
            }
            /*jshint -W116*/
            else if (keyname == null) {
                onFailure();
            }
            else {
                onSuccess(keyname);
            }
        }
function ( keynameFunc , id , successCallback , failureCallback ) { var self = this , onSuccess = function ( keyname ) { successCallback ( keyname ) ; } , onFailure = function ( reason ) { self . log ( qq . format ( "Failed to retrieve key name for {}.  Reason: {}" , id , reason || "null" ) , "error" ) ; failureCallback ( reason ) ; } , keyname = keynameFunc . call ( this , id ) ; if ( qq . isGenericPromise ( keyname ) ) { keyname . then ( onSuccess , onFailure ) ; } /*jshint -W116*/ else if ( keyname == null ) { onFailure ( ) ; } else { onSuccess ( keyname ) ; } }
Called by the internal onUpload handler if the integrator has supplied a function to determine
the file's key name.  The integrator's function may be promissory.  We also need to fulfill
the promise contract associated with the caller as well.

@param keynameFunc Integrator-supplied function that must be executed to determine the key name.  May be promissory.
@param id ID of the associated file
@param successCallback Invoke this if key name retrieval is successful, passing in the key name.
@param failureCallback Invoke this if key name retrieval was unsuccessful.
@private
Called by the internal onUpload handler if the integrator has supplied a function to determine the file s key name . The integrator s function may be promissory . We also need to fulfill the promise contract associated with the caller as well .