From what I can tell we need to inject concurrency because it must call `scheduler.schedulePeriodically` for timer events.

However, I don't know if we want to use `newThread()` as the default as this will create a new thread for every buffer timespan, so that feels like overkill.

Perhaps we should use `Schedulers.threadPoolForComputation()` instead so it's coming from a shared thread-pool and supports Java native fixed-rate scheduling (which this implementation supports)?