The library caller could call Poll() first, then call Read(), and the expectation is the char won't be lost. SBI doesn't have a poll call itself, so best you could do is read and stash. So you have to stash it globally. And read must use the
stashed char, if it exists, before requesting more data from SBI. At that point, reading is easy to treat as continued polling - just to keep the code simple.
A