I wouldn't define it as Sans-IO if you take an IO argument and block/wait on reading/writing, whether that be via threads or an event loop.
Sans-IO the IO is _outside_ completely. No read/write at all.
Sans-IO the IO is _outside_ completely. No read/write at all.