UNPKG

562 BJavaScriptView Raw
1export 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
20export 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}