code: private void fetchResource(HttpMessage msg) throws IOException {
  		if (parent.getHttpSender() == null) {
  			return;
  		}
  		
  		try {
  			parent.getHttpSender().sendAndReceive(msg);
  		} catch (ConnectException e) {
  			log.debug("Failed to connect to: " + msg.getRequestHeader().getURI(), e);
  			throw e;
  		} catch (SocketTimeoutException e) {
  			log.debug("Socket timeout: " + msg.getRequestHeader().getURI(), e);
  			throw e;
  		} catch (SocketException e) {
  			log.debug("Socket exception: " + msg.getRequestHeader().getURI(), e);
  			throw e;
  		} catch (UnknownHostException e) {
  			log.debug("Unknown host: " + msg.getRequestHeader().getURI(), e);
  			throw e;
  		} catch (Exception e) {
  			log.error("An error occurred while fetching the resource [" + msg.getRequestHeader().getURI() + "]: "
  						+ e.getMessage(), e);
  			throw e;
  		}
  	}
docs: Fetches a resource.
  
  @param msg the HTTP message that will be sent to the server
  @throws IOException Signals that an I/O exception has occurred.