docs: function copyFile(source, target) {
      var deferred,
          rd,
          wr;
  
      if (typeof fs.copyFile === 'function') {
          return Q.ninvoke(fs, 'copyFile', source, target);
      }
  
      deferred = Q.defer();
  
      rd = fs.createReadStream(source);
      wr = fs.createWriteStream(target);
  
      rd.on('error', function (err) {
          deferred.reject(err);
      });
  
      wr.on('error', function (err) {
          deferred.reject(err);
      });
      wr.on('close', function () {
          deferred.resolve();
      });
  
      rd.pipe(wr);
  
      return deferred.promise;
  }