Handle dispatch suspend/resume slightly better

I don't know if this is quite right, but it seems more right.  It turns out the io async merge broke Yuusha 30 Second, which this fixes.  It still breaks later though, but it gets as far as it did before.

Not many games I have actually call these funcs... Yuusha 30 Second seems to be using them as a way to prevent IO from rescheduling (which is very interesting, I need to test if the IO read still happens or not in that case, since it'll tell me if it always handles it on a thread or not.)

-[Unknown]