-buffer! now checks for a request that's too big on each trip through. This way, overstepping requests are immediately killed (rather than waiting for the end of the current read)