src/main/java/io/reactivex/Flowable.java
@CheckReturnValue
    @BackpressureSupport(BackpressureKind.FULL)
    @SchedulerSupport(SchedulerSupport.NONE)
    public final Flowable<T> retry() {
        return retry(Long.MAX_VALUE, Functions.alwaysTrue());
    }
@CheckReturnValue
    @BackpressureSupport(BackpressureKind.FULL)
    @SchedulerSupport(SchedulerSupport.NONE)
    public final Flowable<T> retry() {
        return retry(Long.MAX_VALUE, Functions.alwaysTrue());
    }
Returns a Flowable that mirrors the source Publisher, resubscribing to it if it calls {@code onError}
(infinite retry count).
<p>
<img width="640" height="315" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/retry.png" alt="">
<p>
If the source Publisher calls {@link Subscriber#onError}, this method will resubscribe to the source
Publisher rather than propagating the {@code onError} call.
<p>
Any and all items emitted by the source Publisher will be emitted by the resulting Publisher, even
those emitted during failed subscriptions. For example, if a Publisher fails at first but emits
{@code [1, 2]} then succeeds the second time and emits {@code [1, 2, 3, 4, 5]} then the complete sequence
of emissions and notifications would be {@code [1, 2, 1, 2, 3, 4, 5, onComplete]}.
<dl>
<dt><b>Backpressure:</b></dt>
<dd>The operator honors downstream backpressure and expects the source {@code Publisher} to honor backpressure as well.
If this expectation is violated, the operator <em>may</em> throw an {@code IllegalStateException}.</dd>
<dt><b>Scheduler:</b></dt>
<dd>{@code retry} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>

@return the source Publisher modified with retry logic
@see <a href="http://reactivex.io/documentation/operators/retry.html">ReactiveX operators documentation: Retry</a>