Returns the health info of a node.

        Parameters:
            node (ObjectID): Node ID
            dc (str): Specify datacenter that will be used.
                      Defaults to the agent's local datacenter.
            watch (Blocking): Do a blocking query
            consistency (Consistency): Force consistency
        Returns:
            CollectionMeta: where value is a list of checks

        returns the checks specific of a node.

        It returns a body like this::

            [
              {
                "Node": "foobar",
                "CheckID": "serfHealth",
                "Name": "Serf Health Status",
                "Status": "passing",
                "Notes": "",
                "Output": "",
                "ServiceID": "",
                "ServiceName": ""
              },
              {
                "Node": "foobar",
                "CheckID": "service:redis",
                "Name": "Service 'redis' check",
                "Status": "passing",
                "Notes": "",
                "Output": "",
                "ServiceID": "redis",
                "ServiceName": "redis"
              }
            ]

        In this case, we can see there is a system level check (that is, a
        check with no associated ``ServiceID``) as well as a service check for
        Redis. The "serfHealth" check is special in that it is automatically
        present on every node. When a node joins the Consul cluster, it is
        part of a distributed failure detection provided by Serf. If a node
        fails, it is detected and the status is automatically changed to
        ``critical``.

async def node(self, node, *, dc=None, watch=None, consistency=None):
        """Returns the health info of a node.

        Parameters:
            node (ObjectID): Node ID
            dc (str): Specify datacenter that will be used.
                      Defaults to the agent's local datacenter.
            watch (Blocking): Do a blocking query
            consistency (Consistency): Force consistency
        Returns:
            CollectionMeta: where value is a list of checks

        returns the checks specific of a node.

        It returns a body like this::

            [
              {
                "Node": "foobar",
                "CheckID": "serfHealth",
                "Name": "Serf Health Status",
                "Status": "passing",
                "Notes": "",
                "Output": "",
                "ServiceID": "",
                "ServiceName": ""
              },
              {
                "Node": "foobar",
                "CheckID": "service:redis",
                "Name": "Service 'redis' check",
                "Status": "passing",
                "Notes": "",
                "Output": "",
                "ServiceID": "redis",
                "ServiceName": "redis"
              }
            ]

        In this case, we can see there is a system level check (that is, a
        check with no associated ``ServiceID``) as well as a service check for
        Redis. The "serfHealth" check is special in that it is automatically
        present on every node. When a node joins the Consul cluster, it is
        part of a distributed failure detection provided by Serf. If a node
        fails, it is detected and the status is automatically changed to
        ``critical``.
        """
        node_id = extract_attr(node, keys=["Node", "ID"])
        params = {"dc": dc}
        response = await self._api.get("/v1/health/node", node_id,
                                       params=params,
                                       watch=watch,
                                       consistency=consistency)
        return consul(response)