Scala can better write this function using flatMap which is Option<T> -> (T -> Option<U>) -> Option<U>.
flatMap
Option<T> -> (T -> Option<U>) -> Option<U>
This is called the monadic model of computation through a 0-or-1 element list.
a flatMap b flatMap c flatMap ...
Zing!