title: RxAndroid operator retryWhen is invoked but does not resubscribe
body: <ol>
  <li><p>API class using Retrofit  </p>
  
  <pre>
  class interface TestApi {
    @GET("/path/abc/xyz") 
    fun get(): Single
  }
  </pre></li>
  <li><p>UseCase class  </p>
  
  <p><pre>
  fun getResult(): Single {
        return testApi.get()
          .map{ response -> 
              val type = response.type
              when(type){
               null -> throw Exception()
               else -> response
              } 
           }
          .retryWhen{ throwableHandler ->
              throwableHandler.flatMap {
                  when(it) {
                     is Exception() -> Flowable.error(it)
                     else -> Flowable.timer(3,TimeUnit.SECONDS)
                   }
              }
          }
          .timeout(60, TimeUnit.SECONDS)
      }
      </pre></p></li>
  <li><p>MainClass.kt  </p>
  
  <pre>
  usecase.getResult()
          .subscribeOn(Schedulers.io())
          .observeOn(AndroidSchedulers.mainThread())
          .subscribeBy(onError = {Log.d(TAG,"Error")},
                       onSuccess = {Log.d(TAG,"Next")})
  </pre></li>
  <li><p>When app run :<br>
  If api return NULL, retryWhen() will be invoked then api is called again.
  Event not timeout reached and api return Not NUL result -> onSuccess is called. This is correctly processing of retryWhen() operator in rxJava.  </p></li>
  </ol>
  
  <p><strong>My Problem:</strong><br>
  If I write some test method (to pretend API Retrofit) in MainClass.kt looks like below: </p>
  
  <pre><code>private fun testPretend(): Single&lt;Animal&gt; {
    return Single.just(Animal)
  }
  </code></pre>
  
  <p>MainClass.kt looks like:  </p>
  
  <pre><code>testPretend()
      .subscribeOn(Schedulers.io())
      .observeOn(AndroidSchedulers.mainThread())
      .subscribeBy(onError = {Log.d(TAG,"Error")},
                       onSuccess = {Log.d(TAG,"Next")})
  </code></pre>
  
  <p>So event retryWhen is invoked , testPretend() method is not called again. 
  What is the problem here?<br>
  And what is difference between Single return by testPrerend() and Retrofit API ?</p>