def delete(self, key, return_previous=None, timeout=None):
        """
        Delete value(s) from etcd.

        :param key: key is the first key to delete in the range.
        :type key: bytes or instance of :class:`txaioetcd.KeySet`

        :param return_previous: If enabled, return the deleted key-value pairs
        :type return_previous: bool or None

        :param timeout: Request timeout in seconds.
        :type timeout: int

        :returns: Deletion info
        :rtype: instance of :class:`txaioetcd.Deleted`
        """
        assembler = commons.DeleteRequestAssembler(self._url, key, return_previous)

        obj = yield self._post(assembler.url, assembler.data, timeout)

        deleted = Deleted._parse(obj)

        returnValue(deleted)