handle async decoding, out-of-order decoding better, and
decoding that takes longer than the stream