Why type instability?

My point is that it guarantees type-stability. Wherever you call fun you are sure the return type is an Int. Also, it only converts the type if it is “convertable”. fun("hello") throws an error.