How's that unpredictable? It will always throw for all and only empty lis arguments.
This comes up a lot in the Haskell community -- code outside IO is guaranteed by the compiler to be pure, but you can still get hit with an asynchronous exception because you called a partial function.