Your crate currently does not expose a sync::Terminal's child_proc field in any way. Thus, it is impossible to do things like wait on a process, or get access to its underlying stderr - the only possible interaction with the child process is to close it through Terminal::close. Seeing as you're planning on using AsRef (and, presumably, AsMut) in async::Terminal to expose its inner tokio::Child (#2 (comment)), are there any blocking issues that prevent doing the same in sync::Terminal?