Рекурсивный вызов по ленивому значению с использованием LiveData и ObserveForever

У меня есть следующая структура классов:

Activity> ViewModel> DataManager> ApiManager

Я пытаюсь использовать LiveData для совместного использования объектов между слоями. DataManager и ApiManager являются объектами kotlin, поэтому они не имеют ссылки на действия. Чтобы реализовать «обратный вызов», я использую функции observeforever в DataManager и ApiManager следующим образом:

 fun doStuff(inParam:String, inParam2:String)LiveData<Pair<String,Boolean>>{ var reponse:MutableLiveData<Pair<String,Boolean>> = MutableData() val requestResponse: LiveData<Pair<String, CustomType>>= ApiManager.doStuff(inParam1, inParam2) requestResponse.observeForever { //Do some task here response.value = Pair("ok",true) } return response } 

На практике это работает так, как ожидалось, с этой структурой я обновляю свою активность с помощью LiveData . Мои проблемы возникают, когда я экспортирую подписанный apk. Во время этого процесса называется VitalLint и, несмотря на сгенерированный подписанный apk, он показывает следующую ошибку, указывающую на активность при чтении LiveData :

 Error:java.lang.IllegalStateException: Recursive call in a lazy value under LockBasedStorageManager@351242ee (<unknown creating class>) 

Ошибка связана с этой строкой:

 val status:Boolean = either.second 

Я подозреваю, что это может быть связано с моим способом реализовать наблюдение с помощью функции observeForever но я не вижу другого способа наблюдать, не имея компонента, observeForever от жизненного цикла, в моих объектных классах. Есть идеи?