unconsumed buffer is passed back