| 126 | } |
| 127 | |
| 128 | async function downloadBinary(url, destPath) { |
| 129 | const res = await download(url); |
| 130 | return new Promise((resolve, reject) => { |
| 131 | const fileStream = fs.createWriteStream(destPath); |
| 132 | res.on("error", (err) => { |
| 133 | fileStream.destroy(); |
| 134 | fs.unlink(destPath, () => {}); |
| 135 | reject(err); |
| 136 | }); |
| 137 | res.pipe(fileStream); |
| 138 | fileStream.on("finish", () => fileStream.close(() => resolve())); |
| 139 | fileStream.on("error", (err) => { |
| 140 | fs.unlink(destPath, () => {}); |
| 141 | reject(err); |
| 142 | }); |
| 143 | }); |
| 144 | } |
| 145 | |
| 146 | function computeChecksum(filePath) { |
| 147 | return new Promise((resolve, reject) => { |