evalJsonp had a callback surrounded by a try, catch block.  In some cases, this can cause the callback to be returned twice, since that try catch block may catch an error that shouldn't be caught there that was thrown by the callback function called in the try catch block.  Also cleaned up evaljsonp to increase readiability and clarity of what is going on, as well as writing a test that will reproduce the issue.