беспокоит только конкатенация строк
кидает исключение в бизнес-логике
Single<String> или Single<Exception>? Это же дичь. Сделай так: репозиторий пускай возвращает Single<Result>.sealed class Result {
data class Success(result: String): Result()
data class Error(exception: Exception): Result()
}