async function maybeDownload(sourceURL, destPath) {
  return new Promise(async (resolve, reject) => {
    if (!fs.existsSync(destPath) || fs.lstatSync(destPath).size === 0) {
      mkdirp(path.dirname(destPath), function(err) {
        if (err) {
          reject(err)
        }
      });
      const localZipFile = fs.createWriteStream(destPath);
      http.get(sourceURL, response => {
        response.pipe(localZipFile);
        localZipFile.on('finish', () => {
          localZipFile.close(() => resolve());
        });
        localZipFile.on('error', err => reject(err));
      });
    } else {
      return resolve();
    }
  });
}
Get a file by downloading it if necessary.

@param {string} sourceURL URL to download the file from.
@param {string} destPath Destination file path on local filesystem.