anchor.diff:  
   [source, java]
   ----
  -private void computeEvaluation(HttpClient httpClient, Handler<AsyncResult<Double>> resultHandler) {
       // We need to call the service for each company we own shares
       List<Future> results = portfolio.getShares().entrySet().stream()
  -        .map(entry -> getValueForCompany(httpClient, entry.getKey(), entry.getValue()))    // <1>
  +        .map(entry -> getValueForCompany(webClient, entry.getKey(), entry.getValue()))    // <1>
           .collect(Collectors.toList());
   
  -
  -    // We need to return only when we have all results, for this we create a composite future.
  -    // The set handler is called when all the futures has been assigned.
  -    CompositeFuture.all(results).setHandler(                                            // <2>
  -      ar -> {
  -        double sum = results.stream().mapToDouble(fut -> (double) fut.result()).sum();  // <3>
  -        resultHandler.handle(Future.succeededFuture(sum));                              // <4>
  -    });
  -}
  +    // We need to return only when we have all results, for this we create a composite future. The set handler
  +    // is called when all the futures has been assigned.
  +    CompositeFuture.all(results).setHandler(                                              // <2>
  +        ar -> {
  +          double sum = results.stream().mapToDouble(fut -> (double) fut.result()).sum();  // <3>
  +          resultHandler.handle(Future.succeededFuture(sum));                              // <4>
  +        });
   ----
   
   First, we need to get a list of `Future` that would receive the different evaluations (one per company) (1). This
  
positive.code: ****
  [source, java]
  ----
  private Future<Double> getValueForCompany(HttpClient client, String company, int numberOfShares) {
    // Create the future object that will  get the value once the value have been retrieved
    Future<Double> future = Future.future();                                           // <1>
  
    client.get("/?name=" + encode(company), response -> {                              // <2>
      response.exceptionHandler(future::fail);                                         // <3>
      if (response.statusCode() == 200) {
        response.bodyHandler(buffer -> {
          double v = numberOfShares * buffer.toJsonObject().getDouble("bid");
          future.complete(v);                                                          // <4>
        });
      } else {
        future.complete(0.0);                                                          // <5>
      }
    })
      .exceptionHandler(future::fail)                                                  // <6>
      .end();                                                                          // <7>
  
    return future;
  }
  ----
  
  First, we create the `Future` object that will be returned by the method (1). Then, we use the HTTP client to retrieve
  the last quote of the company with the `get` method (2). `get` prepares the request but does not emit it until `end` is
   called. The HTTP Client is already configured with the right IP and port (the service discovery manages this). When we
    get the response, we have to register an `exceptionHandler` (3) to catch failures that may happen when receiving the
    response body. Then we can read the body and compute the evaluation. When done, we assigned a value to the `Future`
    (4). If the company cannot be found, we evaluate these shares to `0.0` (5).
  
  As the connection to the server may fail, we should also register an `exceptionHandler` on the client itself (6).
  Finally, we emit the request using the `end` method (7).
  
  ****
  
  
negative.code: ****
  [source, java]
  ----
  HttpEndpoint.getWebClient(discovery, new JsonObject().put("name", "quotes"), // <1>
    client -> {
      if (client.failed()) {                                                   // <2>
        // It failed...
        resultHandler.handle(Future.failedFuture(client.cause()));
      } else {
        // We have the client
        WebClient webClient = client.result();                                 // <3>
        computeEvaluation(webClient, resultHandler);
      }
    });
  ----
  <1> Get the Web Client for the requested service.
  <2> The client cannot be retrieved (service not found), report the failure
  <3> We have the client, let's continue...
  ****
  