var loaderUtils = require('loader-utils');
var postcss     = require('postcss');

module.exports = function (source, map) {
    if ( this.cacheable ) this.cacheable();

    var file    = loaderUtils.getRemainingRequest(this);
    var params  = loaderUtils.parseQuery(this.query);

    var opts = {
        from: file, to: file,
        map: {
            inline: false,
            annotation: false
        }
    };
    if ( map ) opts.map.prev     = map;
    if ( params.safe ) opts.safe = true;

    var plugins = this.options.postcss;
    if ( params.pack ) {
        plugins = plugins[params.pack];
    } else if ( !Array.isArray(plugins) ) {
        plugins = plugins.defaults;
    }

    var processed = postcss.apply(postcss, plugins).process(source, opts);
    this.callback(null, processed.css, processed.map);
};

@@ -684,16 +684,50 @@
 %0A    %7D%0A%0A
+    var callback  = this.async();%0A
     var 
@@ -733,18 +733,18 @@
  process
-ed
+or
  = postc
@@ -769,16 +769,32 @@
 plugins)
+;%0A%0A    processor
 .process
@@ -811,62 +811,144 @@
 pts)
-;%0A    this.callback(null, processed.css, processed.map
+.then(function (result) %7B%0A        callback(null, result.css, result.map);%0A    %7D).catch(function (error) %7B%0A        callback(error);%0A    %7D
 );%0A%7D

Use PostCSS async API