code: async def emit_event(self, event):
          
          self.log.debug("publishing event on %s", self.publish_topic)
          if self.config.extra['config']['pub_options']['retain']:
              try:
                  await persist_event(
                      self.publish_topic,
                      event,
                      self.pool
                  )
              except SystemError as error:
                  self.log.error(error)
                  return
  
          try:
              await self.publish(
                  self.publish_topic,
                  event.__dict__,
                  options=self.publish_options
              )
          except TransportLost as error:
              for task in asyncio.Task.all_tasks():
                  task.cancel()
              asyncio.get_event_loop().stop()
              self.log.error(error)
docs: Publish an event back to crossbar
          :param event: Event object