session-ios/SignalServiceKit/src/Loki/Utilities/Promise+Retrying.swift
Niels Andriesse aefdbeb7bc Fix threading
2019-11-13 13:12:25 +11:00

16 lines
482 B
Swift

import PromiseKit
internal extension Promise {
internal func retryingIfNeeded(maxRetryCount: UInt) -> Promise<T> {
var retryCount = 0
func retryIfNeeded() -> Promise<T> {
return recover(on: DispatchQueue.global()) { error -> Promise<T> in
guard retryCount != maxRetryCount else { throw error }
retryCount += 1
return retryIfNeeded()
}
}
return retryIfNeeded()
}
}