1 | const http = require('http-call').HTTP
|
2 | const maxRetries = 10
|
3 |
|
4 | async 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 |
|
26 | module.exports = function (url, out) {
|
27 | return call(url, out, 0)
|
28 | }
|