Я пытаюсь добавить проверку кода состояния ответа, если моя удаленная служба возвращает 401
.
Я пытаюсь использовать расширение PromiseKit URLSession
.
Представьте, что у меня есть что-то базовое, например
return firstly {
URLSession.shared.dataTask(.promise, with: request)
}.compactMap {
try JSONDecoder().decode(T.self, from: $0.data)
}
. Я хотел бы добавить проверку кода состояния ответа, чтобы я мог выдать ошибку и выполнить некоторые дальнейшие действия.
Что-то вроде
return firstly {
URLSession.shared.dataTask(.promise, with: request)
}.map { session in
if (session.response as? HTTPURLResponse)?.statusCode == 401 {
// throw a custom error here
// something like
// throw TokenProviderError.unauthorized
}
return session.data
}.compactMap {
try JSONDecoder().decode(T.self, from: $0)
}.catch { error in
// check the error thrown here and do something
}
Это исключение
Невозможно преобразовать возвращаемое выражение типа 'PMKFinalizer' в возвращаемый тип 'Promise'
Можно ли ввести что-то вроде retryWhen
, что позволит мне отлавливать ошибки и проверять?