Two other things I'm wondering:

* Should we worry about the overhead of doing a stop+start every 10MB?
* Instead of `nb <= 65536`, should we test `nb - nb_available(sbuf) <= X` ?