@tailrec def extractMsg(t: Throwable): String = 
      if (t == null) "unknown"
      else {
        t.getMessage match {
          case null | "" => extractMsg(t.getCause)
          case msg => msg
        }
      }