etcd/etcd-client/src/main/java/org/boon/etcd/EtcdClient.java
private void sendHttpRequest(final Request request, final org.boon.core.Handler<Response> responseHandler) {

        final HttpClientRequest httpClientRequest = httpClient.request(request.getMethod(), request.uri(),
                handleResponse(request, responseHandler));


        final Runnable runnable = new Runnable() {
            @Override
            public void run() {

                if (!request.getMethod().equals("GET")) {
                    httpClientRequest.putHeader("Content-Type", "application/x-www-form-urlencoded").end(request.paramBody());
                } else {
                    httpClientRequest.end();
                }

            }
        };



        if (closed.get()) {
            this.scheduledExecutorService.schedule(new Runnable() {
                @Override
                public void run() {
                    connect();
                    int retry = 0;
                    while (closed.get()) {
                        Sys.sleep(1000);

                        if (!closed.get()) {
                            break;
                        }
                        retry++;
                        if (retry>10) {
                            break;
                        }

                        if ( retry % 3 == 0 ) {
                            connect();
                        }
                    }

                    if (!closed.get()) {
                        runnable.run();
                    } else {
                        responseHandler.handle(new Response("TIMEOUT", -1, new Error(-1, "Timeout", "Timeout", -1L)));
                    }
                }
            }, 10, TimeUnit.MILLISECONDS);
        } else {
            runnable.run();
        }



    }
private void sendHttpRequest(final Request request, final org.boon.core.Handler<Response> responseHandler) {

        final HttpClientRequest httpClientRequest = httpClient.request(request.getMethod(), request.uri(),
                handleResponse(request, responseHandler));


        final Runnable runnable = new Runnable() {
            @Override
            public void run() {

                if (!request.getMethod().equals("GET")) {
                    httpClientRequest.putHeader("Content-Type", "application/x-www-form-urlencoded").end(request.paramBody());
                } else {
                    httpClientRequest.end();
                }

            }
        };



        if (closed.get()) {
            this.scheduledExecutorService.schedule(new Runnable() {
                @Override
                public void run() {
                    connect();
                    int retry = 0;
                    while (closed.get()) {
                        Sys.sleep(1000);

                        if (!closed.get()) {
                            break;
                        }
                        retry++;
                        if (retry>10) {
                            break;
                        }

                        if ( retry % 3 == 0 ) {
                            connect();
                        }
                    }

                    if (!closed.get()) {
                        runnable.run();
                    } else {
                        responseHandler.handle(new Response("TIMEOUT", -1, new Error(-1, "Timeout", "Timeout", -1L)));
                    }
                }
            }, 10, TimeUnit.MILLISECONDS);
        } else {
            runnable.run();
        }



    }
This actually sends the request.
@param request request
@param responseHandler handler