function asyncFunction() {
        
        // Prepare args (remove first arg and add callback to the end)
        // The cycle is used because of slow v8 arguments materialization
        for (var i = 0, args = [], l = arguments.length; i < l; i++) {
            args.push(arguments[i]);
        }

        var obj = context || this,
            cb = args.pop(),
            async = true;
        
        if (typeof(cb) !== 'function') {
            args.push(cb);
            if (Fiber.current) async = false;
        }
        
        Fiber.current = Fiber.current || fiber;
        
        // Call asynchronously
        if (async) {
            Sync(function(){
                return fn.apply(obj, args);
            }, cb);
        }
        // Call synchronously in same fiber
        else {
            return fn.apply(obj, args);
        }
    }
Use this method to make asynchronous function from synchronous one
This is a opposite function from .sync()