1 | export function retrySync (fn) {
|
2 | let res
|
3 | let tries = 3
|
4 |
|
5 | while (--tries) {
|
6 | try {
|
7 | res = fn()
|
8 | } catch (err) {
|
9 | if (err.code === 'EEXIST') continue
|
10 |
|
11 | throw err
|
12 | }
|
13 |
|
14 | return res
|
15 | }
|
16 |
|
17 | throw new Error('Failed to find unique name')
|
18 | }
|
19 |
|
20 | export function retryAsync (fn, cb) {
|
21 | let tries = 3
|
22 |
|
23 | ;(function next () {
|
24 | fn(function (err, res) {
|
25 | if (!err) return cb(null, res)
|
26 | if (err.code !== 'EEXIST') return cb(err)
|
27 | if (--tries === 0) return cb(new Error('Failed to find unique name'))
|
28 |
|
29 | next()
|
30 | })
|
31 | }())
|
32 | }
|