Misc errors when errors happen

When things go really wrong, a lot more things also go wrong.

(NB this builds on #83 at present, so merge that first.)

What exception could `t.cancel(true)` throw - is it just being cautious? No harm having the try-catch I guess.