Is the code reuse between the two branches more important than readability?

    case e: InterruptedException) ⇒
      unreserveChild(name)
      Thread.interrupted() // clear interrupted flag before throwing according to java convention
      throw e
    case NonFatal(d)) ⇒
      unreserveChild(name)
      throw e