code: async def fire(self, name, payload=None, *,
                     dc=None, node=None, service=None, tag=None):
          
          params = {
              "dc": dc,
              "node": extract_pattern(node),
              "service": extract_pattern(service),
              "tag": extract_pattern(tag)
          }
          payload = encode_value(payload) if payload else None
          response = await self._api.put(
              "/v1/event/fire", name,
              data=payload,
              params=params,
              headers={"Content-Type": "application/octet-stream"})
          result = format_event(response.body)
          return result
docs: Fires a new event
  
          Parameters:
              name (str): Event name
              payload (Payload): Opaque data
              node (Filter): Regular expression to filter by node name
              service (Filter): Regular expression to filter by service
              tag (Filter): Regular expression to filter by service tags
              dc (str): Specify datacenter that will be used.
                        Defaults to the agent's local datacenter.
          Returns:
              Object: where value is event ID
  
          The return body is like::
  
              {
                  "ID": "b54fe110-7af5-cafc-d1fb-afc8ba432b1c",
                  "Name": "deploy",
                  "Payload": None,
                  "NodeFilter": re.compile("node-\d+"),
                  "ServiceFilter": "",
                  "TagFilter": "",
                  "Version": 1,
                  "LTime": 0
              }
  
          The **ID** field uniquely identifies the newly fired event.