Per 11.2.3, the argument list is evaluate right after evaluating the function, and before checking whether the result is actually and object and callable. Hence, the following must print "hi": <script> function bad() { throw "hi"; } try { var f = 42; f(bad()); } catch (e) { alert(e); } </script> JSC evaluates the argument list later down in the sequence.
This was fixed by SquirrelFish, and I landed a test in r34413.