Por que iterator.forEachRemaining não remove o elemento no lambda Consumer?

Vamos dar uma olhada neste exemplo:

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();
    }
}

E agora, isso funciona bem:

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

enquanto isso lança uma IllegalStateException:

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

Minha pergunta é curta: por quê?

questionAnswers(1)

yourAnswerToTheQuestion