 path = require 'path-extra'
 Promise = require 'bluebird'
 request = Promise.promisifyAll require 'request'
-requestAsync = Promise.promisify request
+requestAsync = Promise.promisify request, multiArgs: true
 fs = Promise.promisifyAll require 'fs-extra'
 gulp = require 'gulp'
 AdmZip = require 'adm-zip'

    [response, body] = yield requestAsync
      url: url
      encoding: null
    yield fs.writeFileAsync dest_path, body
    log "Successfully downloaded to #{dest_path}"
  dest_path

  zip.extractAllTo dest_path, true
  log "Extracting #{descript} finished"

downloadExtractZipAsync = async (url, download_dir, filename, dest_path,
                                 description) ->
  while 1
    try
      zip_path = yield downloadAsync url, download_dir, filename, description
      extractZip zip_path, dest_path, description
    catch
