@Override
  public T await() throws ApiException, IOException, InterruptedException {
    try {
      HTTPResponse result = call.get();
      metrics.endNetwork();
      return parseResponse(this, result);
    } catch (ExecutionException e) {
      if (e.getCause() instanceof IOException) {
        throw (IOException) e.getCause();
      } else {
        // According to
        // https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/urlfetch/URLFetchService
        // all exceptions should be subclass of IOException so this should not happen.
        throw new UnknownErrorException("Unexpected exception from " + e.getMessage());
      }
    }
  }
@param request HTTP request to execute.
@param client The client used to execute the request.
@param responseClass Model class to unmarshal JSON body content.
@param fieldNamingPolicy FieldNamingPolicy for unmarshaling JSON.
@param errorTimeOut Number of milliseconds to re-send erroring requests.
@param maxRetries Number of times allowed to re-send erroring requests.
src/main/java/com/google/maps/internal/GaePendingResult.java