lib/recaster.js
function recast(args) {
     var encoding = args.encoding || undefined;
    // var vow = VOW.make();
    return readData(args.fullPath, args.srcData, args.type, args.path)
        .when(function(data) {
            data.isModule = args.isModule;
            args.srcData = data.recast;
            args.type = data.type;
            data.path = args.path;
            // oldType = args.type = data.type;
            if (!data.type || !extToFunction[data.type])
            {
                // vow.break({ recast: args.srcData, type: data.type });
                return VOW.kept({ recast: args.srcData, type: data.type });
                // return VOW.keep({ recast: args.srcData, type: data.type });
            }
            else {
                data.recast = data.recast.toString();
                var f = extToFunction[data.type];
                // debug('data=' ,data);
                // console.log(extToFunction['html'].toString());
                return f(data);
                // f(data).when(
                //     function(data) {
                //         debug('data=' ,data);
                //         data.recast = data.recast.toString();
                //         vow.keep(data);
                //     },
                //     function(err) {
                //         vow.breek(err);
                //     }
                // );
            }
        }).when(
            function(data) {
                
                if (encoding) return transform.zip(data, encoding);
                else return VOW.kept(data);
            }
        );
    // return vow.promise;
}
function recast(args) {
     var encoding = args.encoding || undefined;
    // var vow = VOW.make();
    return readData(args.fullPath, args.srcData, args.type, args.path)
        .when(function(data) {
            data.isModule = args.isModule;
            args.srcData = data.recast;
            args.type = data.type;
            data.path = args.path;
            // oldType = args.type = data.type;
            if (!data.type || !extToFunction[data.type])
            {
                // vow.break({ recast: args.srcData, type: data.type });
                return VOW.kept({ recast: args.srcData, type: data.type });
                // return VOW.keep({ recast: args.srcData, type: data.type });
            }
            else {
                data.recast = data.recast.toString();
                var f = extToFunction[data.type];
                // debug('data=' ,data);
                // console.log(extToFunction['html'].toString());
                return f(data);
                // f(data).when(
                //     function(data) {
                //         debug('data=' ,data);
                //         data.recast = data.recast.toString();
                //         vow.keep(data);
                //     },
                //     function(err) {
                //         vow.breek(err);
                //     }
                // );
            }
        }).when(
            function(data) {
                
                if (encoding) return transform.zip(data, encoding);
                else return VOW.kept(data);
            }
        );
    // return vow.promise;
}
}); } else vow.keep(data); return vow.promise; }