remove training wheels
Optimistically read from internal buffer
implement delay type callback mechanism
trigger read() after each defer callback
More flexible skip interface