optional retry support

This commit is contained in:
Jannis R 2019-02-08 13:13:53 +01:00
parent 3f58d84de5
commit b0f786c42a
No known key found for this signature in database
GPG key ID: 0FE83946296A88A5
2 changed files with 35 additions and 0 deletions

View file

@ -6,6 +6,7 @@
"files": [ "files": [
"index.js", "index.js",
"throttle.js", "throttle.js",
"retry.js",
"lib", "lib",
"parse", "parse",
"format", "format",

34
retry.js Normal file
View file

@ -0,0 +1,34 @@
'use strict'
const retry = require('p-retry')
const request = require('./lib/request')
const createClient = require('.')
const defaultRetryOpts = {
retries: 3,
factor: 3,
minTimeout: 5 * 1000
}
const createClientWithRetry = (profile, userAgent, retryOpts = defaultRetryOpts) => {
const requestWithRetry = (profile, userAgent, opt, data) => {
const attempt = () => {
return request(profile, userAgent, opt, data)
.catch((err) => {
if (err.isHafasError) throw err // continue
if (err.code === 'ENOTFOUND') { // abort
const abortErr = new retry.AbortError(err)
Object.assign(abortErr, err)
throw abortErr
}
throw err // continue
})
}
return retry(attempt, retryOpts)
}
return createClient(profile, userAgent, requestWithRetry)
}
module.exports = createClientWithRetry