def revoke(self):
        """
        Revokes a lease. All keys attached to the lease will expire
        and be deleted.

        :returns: Response header.
        :rtype: instance of :class:`txaioetcd.Header`
        """
        if self._expired:
            raise Expired()

        obj = {
            # ID is the lease ID to revoke. When the ID is revoked, all
            # associated keys will be deleted.
            u'ID': self.lease_id,
        }
        data = json.dumps(obj).encode('utf8')

        url = u'{}/v3alpha/kv/lease/revoke'.format(self._client._url).encode()
        response = yield treq.post(url, data, headers=self._client._REQ_HEADERS)

        obj = yield treq.json_content(response)

        header = Header._parse(obj[u'header']) if u'header' in obj else None

        self._expired = True

        returnValue(header)