@donncha: OK ??
Difference is:
function_exists = checking if function exists but not if is possible to call it (because disabled_functions for example)
is_callable = this is checking if function is able to be called, return false, if function is in disabled_functions ??
I think, it will be better option to “switch” from function_exists to is_callable.