Am I missing something or is the handling of fetch.wait.max.ms racy? In 0.8 code I don't see any locking (might just be missing it) around the initial check to see if we can satisfy the event and enqueuing a delayed request in the purgatory, so if data arrives that satisfies the request it might be missed. Is that by design?
/Sam