¿Por qué iterator.forEachRemaining no elimina el elemento en la lambda del consumidor?

Veamos este ejemplo:

public class ListIteratorTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("element1");
        list.add("element2");
        list.add("element3");
        list.add("element4");

        ListIterator<String> iterator = list.listIterator();
    }
}

Y ahora, esto funciona bien:

    // prints elements out, and then appropriately removes one after another
    while (iterator.hasNext()){
        System.out.println(iterator.next());
        iterator.remove();
    }

mientras esto arroja una IllegalStateException:

        // throws IllegalStateException, why?
        iterator.forEachRemaining(n -> {
            System.out.println(n);
,            iterator.remove();
        });

Mi pregunta es corta: ¿por qué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta