code: @Override
      public <T> Single<RestClientResponse<T>> request(HttpMethod method, String uri, Class<T> responseClass, Action1<RestClientRequest<T>> requestBuilder) {
          return Single.fromEmitter(emitter -> {
              final RestClientRequest<T> callbackRequest = restClient.request(method, uri, responseClass, restClientResponse -> emitter.onSuccess(new DefaultRxRestClientResponse<>(restClientResponse)))
                      .exceptionHandler(emitter::onError);
              try {
                  final DefaultRxRestClientRequest<T> rxDecoratedRequest = new DefaultRxRestClientRequest<>(callbackRequest);
                  requestBuilder.call(rxDecoratedRequest);
              } catch (Exception e) {
                  emitter.onError(e);
              }
          });
      }
docs: Creates Single based on emitter object. Emitter activated on subscribe() call and then configured to:
  - produce event+complete on successful execution of REST call
  - produce error if something goes wrong during construction OR call execution
  
  Also RestClientRequest is wrapped in custom class that denies override of exception handler
  to make sure error is handled in rx way
  
  @return "cold" Single that emits rest call result