code: public <T> Single<PollingState<T>> beginPostOrDeleteAsync(Observable<Response<ResponseBody>> observable, final LongRunningOperationOptions lroOptions, final Type resourceType) {
          return observable.map(new Func1<Response<ResponseBody>, PollingState<T>>() {
              @Override
              public PollingState<T> call(Response<ResponseBody> response) {
                  RuntimeException exception = createExceptionFromResponse(response, 200, 202, 204);
                  if (exception != null) {
                      throw  exception;
                  }
                  try {
                      final PollingState<T> pollingState = PollingState.create(response, lroOptions, longRunningOperationRetryTimeout(), resourceType, restClient().serializerAdapter());
                      pollingState.withPollingUrlFromResponse(response);
                      pollingState.withPollingRetryTimeoutFromResponse(response);
                      return pollingState;
                  } catch (IOException ioException) {
                      throw Exceptions.propagate(ioException);
                  }
              }
          }).toSingle();
      }
docs: Given an observable representing a deferred POST or DELETE action, this method returns {@link Single} object,
  when subscribed to it, the deferred action will be performed and emits the polling state containing information
  to track the progress of the action.
  
  @param observable an observable representing a deferred POST or DELETE operation.
  @param lroOptions long running operation options.
  @param resourceType the java.lang.reflect.Type of the resource.
  @param <T> the type of the resource
  @return the observable of which a subscription will lead POST or DELETE action.