           log "Extracting #{descript} finished"
           resolve()
 
+extractZipAsync = 
+  if process.platform == 'win32'
+    extractZipNodeAsync
+  else
+    extractZipCliAsync
+
 downloadExtractZipAsync = async (url, download_dir, filename, dest_path,
                                  description, useCli) ->
   while 1
     try
       zip_path = yield downloadAsync url, download_dir, filename, description
-      _extractAsync = if useCli? && useCli 
-        extractZipCliAsync
-      else
-        extractZipAsync
-      yield _extractAsync zip_path, dest_path, description
+      yield extractZipAsync zip_path, dest_path, description
     catch e
       log "Downloading failed, retrying #{url}, reason: #{e}"
       try

  install_flash = installFlashAsync platform, download_dir, flash_dir

  electron_url = get_electron_url platform, electron_version
  install_electron = downloadExtractZipAsync electron_url, download_dir, '',
      stage3_electron, 'electron', (platform_prefix == 'darwin')

  yield Promise.join install_flash, install_electron


    log "Successfully downloaded to #{dest_path}"
  dest_path

extractZipNodeAsync = (zip_file, dest_path, descript="") ->
  log "Extract #{descript}"
  new Promise (resolve) ->
    fs.ensureDirSync path.dirname dest_path
