the 'start' callback needs to be called from the background thread

and not from the thread creating it
use a flat buffer instead of a ringbuffer as request accumulator + tweaks