`getUnit(source).map(f).getOrElse(...)`

it's also kind of weird to have a try/finally in an expression