Это одна из причин, по которой вы используете Rx. Одна возможность может быть:
requestLogin()
.andThen(
hasProjects()
.filter(value -> !value)
.flatMapCompletable(value -> createDefaultProject()))
.subscribe(() ->{}, throwable -> {
// All errors will end up here
});
Мы запрашиваем логин и после его завершения проверяем, есть ли проекты. Если нет, filter
не прервет поток, который создает проект по умолчанию. Если есть проекты, то проект по умолчанию не создается.
Если по пути возникнет какая-либо ошибка, будет вызван метод onError
, и вы сможете обработать ошибки там.