Does the last getOrElse statement make sense? If getExternalAddressFor() fails, that means that we cannot communicate with that system anyway.