code: function copy(src, dest) {
  	return new Promise((resolve, reject) => {
  		var cbCalled = false;
  		var rd = fs.createReadStream(src);
  		rd.on("error", (err) => {
  			done(err);
  		});
  		var wr = fs.createWriteStream(dest);
  		wr.on("error", (err) => {
  			done(err);
  		});
  		wr.on("close", () => {
  			done();
  		});
  		rd.pipe(wr);
  
  		function done(err) {
  			if (!cbCalled) {
  				cbCalled = true;
  				!err ? resolve() : reject(err);
  			}
  		}
  	});
  }
docs: http://stackoverflow.com/a/14387791