def insert(self, index, value):
        """ Inserts @value before @index in the list.

            @index: list index to insert @value before
            @value: item to insert
            @where: whether to insert BEFORE|AFTER @refvalue

            -> #int new length of the list on success or -1 if refvalue is not
                in the list.
        """
        _uuid = gen_rand_str(24, 32)
        item_at_index = self[index]
        self[index] = _uuid
        uuid = _uuid
        _uuid = self._dumps(uuid)
        pipe = self._client.pipeline(transaction=True)  # Needs to be atomic
        pipe.linsert(
                self.key_prefix, "BEFORE", _uuid, self._dumps(value))
        pipe.linsert(
                self.key_prefix, "BEFORE", _uuid, item_at_index)
        results = pipe.execute()
        self.remove(uuid)
        return results[0]