code: public void asyncGet(final String url, final @Nullable List<String> acceptableMediaTypes, final boolean nocache, final Callback callback) {
  		final String url2 = requireNonNull(trimToNull(url), "A non-empty URL expected");
  		requireNonNull(callback, "A valid callback expected");
  		// configure cache
  		final CacheControl.Builder cacheControlBuilder = new CacheControl.Builder();
  		if (nocache) cacheControlBuilder.noCache().noStore();
  		else cacheControlBuilder.maxStale(3600, TimeUnit.SECONDS);
  		// prepare request
  		final Request.Builder requestBuilder = new Request.Builder().cacheControl(cacheControlBuilder.build()).url(url2);
  		ofNullable(acceptableMediaTypes).orElse(emptyList()).stream().filter(Objects::nonNull).forEach(type -> requestBuilder.addHeader("Accept", type));
  		// submit request
  		client.newCall(requestBuilder.build()).enqueue(callback);
  	}
docs: Retrieve information from a server via a HTTP GET request.
  @param url - URL target of this request
  @param acceptableMediaTypes - Content-Types that are acceptable for this request
  @param nocache - don't accept an invalidated cached response, and don't store the server's response in any cache
  @param callback - is called back when the response is readable