title: Retry on a completable observable
body: <p>I've 2 observables. 
  1) Sync orders (Completable) 2) Get All orders.
  I want to Keep syncing products until I get the desired product from the backend. This is polling the backend 5 times every 5 minutes to retrieve order confirmation.</p>
  
  <pre><code> apiService
  .syncOrders()
  .repeatWhen(new Func1&lt;Observable&lt;? extends Void&gt;, Observable&lt;?&gt;&gt;() {
          @Override
          public Observable&lt;Integer&gt; call(final Observable&lt;? extends Void&gt; observable) {
              // Retry 5 more times with 5 seconds delay
              return observable.delay(5, TimeUnit.SECONDS).zipWith(Observable.range(START_RETRY,
                                                                                    MAX_RETRIES),
                                                                   new Func2&lt;Void, Integer, Integer&gt;() {
                                                                       @DebugLog
                                                                       @Override
                                                                       public Integer call(Void v,
                                                                                           Integer integer) {
                                                                           return integer;
                                                                       }
                                                                   });
          }
      }).andThen(apiService.streamOrders().flatMap(new Func1&lt;List&lt;Order&gt;, Observable&lt;Order&gt;&gt;() {
          @Override
          public Observable&lt;Order&gt; call(List&lt;Order&gt; orderList) {
              return Observable.from(orderList);
          }
      }).filter(new Func1&lt;Order, Boolean&gt;() {
          @DebugLog
          @Override
          public Boolean call(Order order) {
              return order.orderRef() == orderId;
          }
      }).first());
  </code></pre>