anchor.diff:  ****
   [source, java]
   ----
  -HttpEndpoint.getClient(discovery, new JsonObject().put("name", "quotes"), // <1>
  +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
  -         HttpClient httpClient = client.result();                                 // <3>
  -         computeEvaluation(httpClient, resultHandler);
  -       }
  - });
  -----
  -<1> Get the HTTP Client for the requested service.
  +    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...
   ****
  
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]
  ----
      // We need to call the service for each company we own shares
      List<Future> results = portfolio.getShares().entrySet().stream()
          .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>
          });
  ----
  
  First, we need to get a list of `Future` that would receive the different evaluations (one per company) (1). This
  