I think this is a semantic problem.
For instance this other
link explains how to throw and exception when invoking a getOutputStream and a request dispatcher.
But I believe both links exemplifies extraordinary circumstances.
While the question refers to the common case when a RequestDispatcher
will throw the exception. The question says
when using a RequestDispatcher, the use of which methods can often lead to an IllegalStateException?
in that context flush() is the most common case.
if you are rigorous write() and getOutputStream may potentially throw an IlegalStateException, as well.