code: @Override
  	public InputStream getAlignmentResults(String id, RemotePairwiseAlignmentOutputProperties outputProperties) throws Exception {
  		Map<String, String> params = new HashMap<String, String>();
  		for (String key : outputProperties.getOutputOptions()) {
  			params.put(key, outputProperties.getOutputOption(key));
  		}
  		OutputStreamWriter writer = null;
  
  		while (!isReady(id)) {
  			Thread.sleep(WAIT_INCREMENT + 100);
  		}
  
  		params.put(CMD.name(), "Get");
  		params.put(RID.name(), id);
  		params.put(TOOL.name(), getTool());
  		params.put(EMAIL.name(), getEmail());
  		String getCmd = MAP_TO_STRING_TRANSFORMER.transform(params);
  
  		try {
  			URLConnection serviceConnection = setQBlastServiceProperties(serviceUrl.openConnection());
  			writer = new OutputStreamWriter(serviceConnection.getOutputStream());
  			writer.write(getCmd);
  			writer.flush();
  			return serviceConnection.getInputStream();
  		} catch (IOException ioe) {
  			throw new Exception("It is not possible to fetch Blast report from NCBI at this time. Cause: " + ioe.getMessage(), ioe);
  		} finally {
  			IOUtils.close(writer);
  		}
  	}
docs: Extracts the actual Blast report for given request id according to options provided in {@code outputProperties}
  argument.
  <p/>
  If the results are not ready yet, sleeps until they are available. If sleeping is not desired, call this method
  after {@code isReady} returns true
  
  @param id : request id, which was returned by {@code sendAlignmentRequest} method
  @param outputProperties : an object specifying output formatting options
  @return an {@code InputStream} of results
  @throws Exception if it is not possible to recover the results