You can, but then you’re denying your callers control over the Io. It’s not really different with async function coloring: https://news.ycombinator.com/item?id=46126310
Scheduling of IO operations isn’t hidden global state. Or if it is, then so is thread scheduling by the OS.