Support generic streams, not just Buffer

@purplefox can you review this ?
Setting default batch size to 1, will mean a very chatty flow control, i.e. it will request a new token after each one consumed.