Метод подстановки Котлина

У меня возникли проблемы с использованием функции retryWhen в RxJava.

Когда я создаю функцию, которая будет передана для retryWhen в Observable , я не могу вызвать функцию zipWith . Кажется, что Котлин ожидает чего-то, чего нельзя отнести здесь.

В этом примере it.zipWith не работает (доступны некоторые другие методы, но не этот):

  val retryFunc = Func1<Observable<out Throwable>, Observable<Any>> { // zipWith is not possible to call it.zipWith<Int, Any>(Observable.range(1, 3), Func2<Throwable, Int, Any> { throwable, integer -> if (integer > 2) { return@Func2 Observable.error<Any>(Exception()) } Observable.timer(1, TimeUnit.SECONDS) }) } Observable.just("1", "2", "3").retryWhen(retryFunc) 

Если я изменяю входящие параметры на Func1<Observable<in Throwable> ... , ключевое слово in позволяет использовать функцию zipWith . Но после того, как я изменился, retryWhen(retryFunc) вызова. retryWhen(retryFunc) показывает ошибку:

Несоответствие типов: Ожидание Throwable, найдено в Throwable

  val retryFunc = Func1<Observable<in Throwable>, Observable<Any>> { it.zipWith<Int, Any>(Observable.range(1, 3), Func2<Throwable, Int, Any> { throwable, integer -> if (integer > 2) { return@Func2 Observable.error<Any>(Exception()) } Observable.timer(1, TimeUnit.SECONDS) }) } Observable.just("1", "2", "3").retryWhen(retryFunc) // type mismatch here, expected out, found in 

Кто-нибудь знает, как я могу получить и произвести тот же тип в Котлине?

Уметь создать zipWith и вернуть ожидаемое значение?

Solutions Collecting From Web of "Метод подстановки Котлина"