What does `lock` buy that `synchronized` doesn't? or is that not idiomatic Scala?