Please consider offering an optional API through which the client supplies I/O methods that do the actual console I/O.
Such an API would make testing easier.
An async wrapper could use this API to act as a conduit for reads and writes to the console. I’ve written an async wrapper. It works pretty well, but there are tricky situations where being involved in the actual reads and writes would help.
Please consider offering an optional API through which the client supplies I/O methods that do the actual console I/O.