function promised(callback) {
    return function () {
        return spread([this, all(arguments)], function (self, args) {
            return callback.apply(self, args);
        });
    };
}
Applies the promised function in a future turn.
@param object    promise or immediate reference for target function
@param args      array of application arguments