src/main/java/io/reactivex/Completable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <R> Completable using(Callable<R> resourceSupplier,
            Function<? super R, ? extends CompletableSource> completableFunction,
            Consumer<? super R> disposer) {
        return using(resourceSupplier, completableFunction, disposer, true);
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <R> Completable using(Callable<R> resourceSupplier,
            Function<? super R, ? extends CompletableSource> completableFunction,
            Consumer<? super R> disposer) {
        return using(resourceSupplier, completableFunction, disposer, true);
    }
Returns a Completable instance which manages a resource along
with a custom Completable instance while the subscription is active.
<p>
<img width="640" height="388" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/Completable.using.png" alt="">
<p>
This overload disposes eagerly before the terminal event is emitted.
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code using} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>
@param <R> the resource type
@param resourceSupplier the supplier that returns a resource to be managed.
@param completableFunction the function that given a resource returns a Completable instance that will be subscribed to
@param disposer the consumer that disposes the resource created by the resource supplier
@return the new Completable instance