We don't set the active stream until we've received data. And we've
removed previousStream since it was vulnerable to race conditions. This
is still quite a hacky way of managing state.