It was a toss up. I went with IllegalStateException because it is listed in the documentation as one of the exceptions this method can throw.

http://docs.oracle.com/javaee/7/api/javax/servlet/ServletInputStream.html#setReadListener(javax.servlet.ReadListener)