private CompletableFuture handleResponse()

in src/main/java/com/spotify/github/v3/clients/GitHubClient.java [1116:1139]


  private CompletableFuture<HttpResponse> handleResponse(
      final HttpRequest httpRequest, final HttpResponse httpResponse) {
    final CompletableFuture<HttpResponse> future = new CompletableFuture<>();
    // avoid multiple redirects
    final AtomicBoolean redirected = new AtomicBoolean(false);
    processPossibleRedirects(httpResponse, redirected)
        .handle(
            (res, ex) -> {
              if (Objects.nonNull(ex)) {
                future.completeExceptionally(ex);
              } else if (!res.isSuccessful()) {
                try {
                  future.completeExceptionally(mapException(httpRequest, res));
                } catch (final Throwable e) {
                  future.completeExceptionally(e);
                }
              } else {
                future.complete(res);
              }
              return res;
            })
        .join();
    return future;
  }