The answer from Martijn is very good if the functions definitions are fixed. An alternative is to change the signature of callFunc1 so that it returns Option[List[Int]] and then use
val requests = callFunc1().getOrElse(callFunc2())
def callFunc1(): Option[List[Int]]
def callFunc2(): List[Int]
The advantage of returning an Option is that you can distinguish between "I failed to read the list" (None) and "I read the list but it was empty" (Some(List())).
The choice will depend on the wider structure of the program, and it depends on what getFunc1 is actually doing and why it might return an empty List. For example, if the data comes from a Map or a File operation, it probably comes wrapped in an Option anyway so returning the Option might simplify that code as well.
Note that you can convert a List to Option[List] like this:
Option(list).filter(_.nonEmpty)
This will return None if list is empty or null, otherwise it will return Some(list).