code: public static <R, S extends Closeable> Observable<R> using(final UnsafeFunc0<S> resourceFactory,
              final Func1<S, Observable<R>> observableFactory) {
          return Observable.using(new Func0<S>() {
              @Override
              public S call() {
                  try {
                      return resourceFactory.call();
                  } catch (Throwable e) {
                      throw new RuntimeException(e);
                  }
              }
          }, observableFactory, new Action1<S>() {
              @Override
              public void call(S resource) {
                  try {
                      resource.close();
                  } catch (IOException e) {
                      throw new RuntimeException(e);
                  }
              }
          }, true);
      }
docs: Helps in creating an Observable that automatically calls {@link Closeable#close()} on completion, error or unsubscribe.
  
  <pre>
  StringObservable.using(() -> new FileReader(file), (reader) -> StringObservable.from(reader))
  </pre>
  
  @param resourceFactory
  Generates a new {@link Closeable} resource for each new subscription to the returned Observable
  @param observableFactory
  Converts the {@link Closeable} resource into a {@link Observable} with {@link #from(InputStream)} or {@link #from(Reader)}
  @return
  An {@link Observable} that automatically closes the resource when done.