code: <R> CMACallback<R> defer(DefFunc<R> func, CMACallback<R> callback) {
      assertNotNull(callback, "callback");
      Observable.defer(func)
          .subscribeOn(Schedulers.io())
          .subscribe(
              new ActionSuccess<R>(callbackExecutor, callback),
              new ActionError(callbackExecutor, callback));
      return callback;
    }
docs: Creates an Observable with the given {@code func} function and subscribes to it
  with a set of pre-defined actions. The provided {@code callback} will be passed to these
  actions in order to populate the events.