Instead we should probably retain a marked reference to the JSGlobalObject, and allocate a new JSContext as necessary.
<rdar://problem/12954143>
I believe this was fixed in http://trac.webkit.org/changeset/143637. I'll try to write a test to verify this.
Actually we already get test coverage for this in the API tests from the aforementioned revision since they use setTimeout with Objective-C callbacks. I set a breakpoint in the code path that checks for null JSContexts in objCCallbackFunctionCallAsFunction and we hit it. So I think we can just close this bug.