//! TODO nb: For now, nothing in this module is actually public; we'll want to expose some of these types.
/// No messages are actually sent or received unless some thread is calling [`PollingStream::interact()`].
/// It would be bad if a writing thread called `waker.wake()`, and then the interactor checked the
/// While the interactor is checking the buffer, nobody is able to add to the buffer _or_ wake the
/// (Note that a message may be available in the internal buffer here even if try_reading is false.)
/// (We don't use a BufReader here because its behavior with nonblocking IO is kind of underspecified.)