*reverse(){

        // special case: list is empty
        if (this[head] !== null) {

            /*
             * The `current` variable is used to iterate over the list items.
             * It starts out pointing to the head and is overwritten inside
             * of the loop below.
             */
            let current = this[head].previous;

            /*
             * As long as `current` is not `head`, there is a piece of data
             * to yield.
             */
            do {
                yield current.data;
                current = current.previous;
            } while (current !== this[head].previous);
        }
    }
Create an iterator that returns each item in the list in reverse order.
@returns {Iterator} An iterator on the list.