UNPKG

700 BJavaScriptView Raw
1const http = require('http-call').HTTP
2const maxRetries = 10
3
4async function call (url, out, retries) {
5 try {
6 let {response} = await http.stream(url)
7 response.on('data', function (d) {
8 out.write(d)
9 })
10 return await new Promise(function (resolve, reject) {
11 response.on('error', reject)
12 response.on('end', resolve)
13 })
14 } catch (err) {
15 if (err.statusCode === 404 && retries <= maxRetries) {
16 return new Promise(function (resolve, reject) {
17 setTimeout(function () {
18 call(url, out, retries + 1).then(resolve, reject)
19 }, 1000)
20 })
21 }
22 throw err
23 }
24}
25
26module.exports = function (url, out) {
27 return call(url, out, 0)
28}