codestats-readme/src/common/retryer.ts
Florian Bouillon 21a6c06f35 Misc Update
Signed-off-by: Florian Bouillon <florian.bouillon@delta-wings.net>
2020-09-21 15:19:48 +02:00

20 lines
458 B
TypeScript

import { CodeStatsResponse } from '../interfaces'
import { CustomError } from './utils'
export default async function retryer<T = Promise<CodeStatsResponse>>(
fetcher: (username: string) => T,
data: string,
retries = 0,
err?: any
): Promise<T> {
if (retries > 7) {
throw new CustomError('Maximum retries exceeded' + err, 'MAX_RETRY')
}
try {
return await fetcher(
data
)
} catch (err) {
return retryer(fetcher, data, ++retries, err)
}
}