code: public boolean refresh(Request req, long timeout) {
      return refreshSubscription(req, timeout, parent.getProxyHost() != null);
    }
docs: This method is the same as refresh(duration, eventId, timeout) except that instead of creating
  the SUBSCRIBE request from parameters passed in, the given request message parameter is used
  for sending out the SUBSCRIBE message.
  <p>
  The Request parameter passed into this method should come from calling createSubscribeMessage()
  - see that javadoc. The subscription duration is reset to the passed in Request's expiry value.
  If it is 0, this is an unsubscribe. The event "id" in the given request will be used
  subsequently (for error checking SUBSCRIBE responses and NOTIFYs from the server as well as for
  sending subsequent SUBSCRIBEs).