code: public static ObservableHttp<ObservableHttpResponse> createRequest(final HttpAsyncRequestProducer requestProducer, final HttpAsyncClient client) {
          return createRequest(requestProducer, client, new BasicHttpContext());
      }
docs: Execute request using {@link HttpAsyncRequestProducer} to define HTTP Method, URI and payload (if applicable).
  <p>
  If the response is chunked (or flushed progressively such as with <i>text/event-stream</i> <a href="http://www.w3.org/TR/2009/WD-eventsource-20091029/">Server-Sent Events</a>) this will call
  {@link Observer#onNext} multiple times.
  <p>
  Use {@code HttpAsyncMethods.create* } factory methods to create {@link HttpAsyncRequestProducer} instances.
  <p>
  A client can be retrieved like this:
  <p>
  <pre> {@code      CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault(); } </pre>
  <p>
  A client with custom configurations can be created like this:
  </p>
  <pre> {@code
  final RequestConfig requestConfig = RequestConfig.custom()
  .setSocketTimeout(3000)
  .setConnectTimeout(3000).build();
  final CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
  .setDefaultRequestConfig(requestConfig)
  .setMaxConnPerRoute(20)
  .setMaxConnTotal(50)
  .build();
  httpclient.start();
  }</pre>
  
  
  @param requestProducer
  @param client
  @return the observable HTTP response stream