ensure that `this.vnode` is always set

You read `prev.vnode` in `update()` which means for this to work you MUST always set `this.vnode` in both `init()` and `update()`

There were two branches where you did not set `this.vnode`. One of them should never get hit, so i just threw an exception instead.