Better error handling around a method call

- Make sure not to double-resolve a future (using two different
  techniques!)

- Try/finally cleanup some resources