code: private static <T> T complete(ListenableFuture<T> future) {
          try {
              return future.get();
          } catch (InterruptedException e) {
              throw new ZendeskException(e.getMessage(), e);
          } catch (ExecutionException e) {
              if (e.getCause() instanceof ZendeskException) {
                  if (e.getCause() instanceof ZendeskResponseRateLimitException) {
                      throw new ZendeskResponseRateLimitException((ZendeskResponseRateLimitException) e.getCause());
                  }
                  if (e.getCause() instanceof ZendeskResponseException) {
                      throw new ZendeskResponseException((ZendeskResponseException)e.getCause());
                  }
                  throw new ZendeskException(e.getCause());
              }
              throw new ZendeskException(e.getMessage(), e);
          }
      }
docs: ////////////////////////////////////////////////////////////////////