I think `ensure` should stay. I communicates clearly that this code has to run no matter what happens. For example your `rescue` statement below does not catch all errors, which will lead to an inconsistent state:

```
irb(main):009:0> begin
irb(main):010:1*   raise Interrupt
irb(main):011:1> rescue => e
irb(main):012:1> end
Interrupt: Interrupt
	from (irb):10
	from /Users/senny/.rbenv/versions/2.0.0-p247/bin/irb:12:in `<main>'
```

You would need to `rescue Exception => e` to catch everything but `ensure` in my opinion `ensure` is better suited for this scenario.