def handle_string_response(self, call_id, payload):
        """Handler for response `StringResponse`.

        This is the response for the following requests:
          1. `DocUriAtPointReq` or `DocUriForSymbolReq`
          2. `DebugToStringReq`
        """
        self.log.debug('handle_string_response: in [typehint: %s, call ID: %s]',
                       payload['typehint'], call_id)

        # :EnDocBrowse or :EnDocUri
        url = payload['text']
        if not url.startswith('http'):
            port = self.ensime.http_port()
            url = gconfig['localhost'].format(port, url)

        options = self.call_options.get(call_id)
        if options and options.get('browse'):
            self._browse_doc(url)
            del self.call_options[call_id]
        else:
            # TODO: make this return value of a Vim function synchronously, how?
            self.log.debug('EnDocUri %s', url)
            return url
Handler for response `StringResponse`.

        This is the response for the following requests:
          1. `DocUriAtPointReq` or `DocUriForSymbolReq`
          2. `DebugToStringReq`