The push/pop is added accordingly:

```js
try {
  a
} catch (ex) {
  b
} finally {
  c
}
```

```js
try {
  push(...)
  a
  pop()
} catch (ex) {
  pop()
  b
} finally {
  pop()
  c
}
```

The number of items pushed depends on whether there is a catch/finally.

... this makes me wonder if I get this right and only add the first pop if there is a catch. I'll have to double check that.