code: public Object invokeAndReadResponse(String methodName, Object argument, Type returnType, OutputStream output, InputStream input) throws Throwable {
  		return invokeAndReadResponse(methodName, argument, returnType, output, input, this.requestIDGenerator.generateID());
  	}
docs: Invokes the given method on the remote service
  passing the given arguments, a generated id and reads
  a response.
  
  @param methodName the method to invoke
  @param argument   the argument to pass to the method
  @param returnType the expected return type
  @param output     the {@link OutputStream} to write to
  @param input      the {@link InputStream} to read from
  @return the returned Object
  @throws Throwable on error
  @see #writeRequest(String, Object, OutputStream, String)