def dataReceived(self, data):

        """
            Takes "data" which we assume is json encoded
            If data has a subject_id attribute, we pass that to the dispatcher
            as the subject_id so it will get carried through into any
            return communications and be identifiable to the client

            falls back to just passing the message along...

        """
        try:
            address = self.guid
            data = json.loads(data)
            threads.deferToThread(send_signal, self.dispatcher, data)

            if 'hx_subscribe' in data:
                return self.dispatcher.subscribe(self.transport, data)

            if 'address' in data:
                address = data['address']
            else:
                address = self.guid

            self.dispatcher.send(address, data)

        except Exception as e:
            raise
            self.dispatcher.send(
                self.guid,
                {'message': data, 'error': str(e)}
            )
Takes "data" which we assume is json encoded
            If data has a subject_id attribute, we pass that to the dispatcher
            as the subject_id so it will get carried through into any
            return communications and be identifiable to the client

            falls back to just passing the message along...