Tony Kovanen
9 years ago
4 changed files with 8 additions and 37 deletions
@ -1,29 +0,0 @@ |
|||||
import retrier from 'retry'; |
|
||||
|
|
||||
export default function retry (fn, opts) { |
|
||||
return new Promise((resolve, reject) => { |
|
||||
const op = retrier.operation(opts); |
|
||||
const { onRetry } = opts; |
|
||||
|
|
||||
// we allow the user to abort retrying
|
|
||||
// this makes sense in the cases where
|
|
||||
// knowledge is obtained that retrying
|
|
||||
// would be futile (e.g.: auth errors)
|
|
||||
const bail = (err) => reject(err); |
|
||||
|
|
||||
op.attempt((num) => { |
|
||||
if (num > 1 && onRetry) { |
|
||||
const errs = op.errors(); |
|
||||
onRetry(errs[errs.length - 1]); |
|
||||
} |
|
||||
|
|
||||
fn(bail) |
|
||||
.then((val) => resolve(val)) |
|
||||
.catch(err => { |
|
||||
if (!op.retry(err)) { |
|
||||
reject(op.mainError()); |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
||||
}); |
|
||||
} |
|
Loading…
Reference in new issue