Call Done(..); this should be a simple one-line affair, but if it is cluttering the code then perhaps create an 'error' function that produces the error.

it can be private to this method, so you don't need to pass all the context:
  def puke(msg: String) : { Logger...; Done...; }