It'd be good to figure out a solution that doesn't require making this method public. When it was public people called it directly and caused problems.

I'd be fine with making it public if the request state machine could also catch these problems. Needs more tests though.