используйте комбинацию Rx2 и Retrofit, тогда вы легко добьетесь этого, она будет выглядеть примерно так:
service.login(username, password)
.retry(RETRY_FETCH_COUNT)
.onErrorResumeNext {
return@onErrorResumeNext doSomethingElse()
}
.observeOn(uiScheduler)
.subscribe({ loginResponse ->
handleLogin(loginResponse)
}, {
onLoginError()
})