Safari has a broken JS implementation that throws an error when a nested ‘named’ function is encountered, e.g.
methods(function foo(self) {},function bar(self) {});
A workaround would be to use anonymous functions instead of named functions. Another issue is that someone needs to implement a custom runtime module in runtime.js to support Safari.