Fix issue where a non-async consumer making lots of small reads could cause a stack overflow

Fixes #2