<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -241,8 +241,9 @@ NORETURN(void) raise_js_error_in_ruby(JohnsonRuntime* runtime)
   }
 
   VALUE ruby_context = (VALUE)JS_GetContextPrivate(context);
+  VALUE ruby_runtime = (VALUE)JS_GetRuntimePrivate(runtime-&gt;js);
   if (johnson_context-&gt;ex)
-    rb_funcall(ruby_context, rb_intern(&quot;handle_js_exception&quot;),
+    rb_funcall(ruby_runtime, rb_intern(&quot;handle_js_exception&quot;),
       1, convert_to_ruby(runtime, johnson_context-&gt;ex));
 
   if (!johnson_context-&gt;msg)</diff>
      <filename>ext/spidermonkey/conversions.c</filename>
    </modified>
    <modified>
      <diff>@@ -616,18 +616,16 @@ print = function(txt) { Ruby.puts(txt); };
             handleResponse();
           }
         } else { 
-          connection = Ruby.Net.HTTP.start(url.host, url.port, function(http) {
-            var out_headers = new Ruby.Hash;
-            for (var header in self.headers)
-              out_headers[header] = self.headers[header];
+          var http = Ruby.Net.HTTP.new(url.host, url.port);
+          var request = new Ruby.Net.HTTP.Get(url.path);
+          for (var header in self.headers)
+            request.add_field(header, self.headers[header]);
 
-            http.send_request( self.method, url.path, nil, out_headers );            
-          });
-          
-          connection.instance_variable_get(&quot;@header&quot;).each(function(k, v) {
+          var connection = http.request(request);
+          connection.each_header(function(k,v) {
             self.responseHeaders[k] = v;
           });
-                    
+
           handleResponse();
         }
         </diff>
      <filename>js/johnson/browser/env.js</filename>
    </modified>
    <modified>
      <diff>@@ -202,6 +202,24 @@ module Johnson
         asplode = lambda { raise err }
         assert_js_equal(err, &quot;x = null; try { foo(); } catch(ex) { x = ex; }; x&quot;, :foo =&gt; asplode)
       end
+
+      # FIXME: If you uncomment this test, we get this error:
+      #
+      # JS API usage error: the address passed to JS_AddNamedRoot currently holds an
+      # invalid jsval.  This is usually caused by a missing call to JS_RemoveRoot.
+      # The root's name is &quot;ruby_land_proxy.c[210]:native_call: proxy_value&quot;.
+      # Assertion failure: root_points_to_gcArenaList, at jsgc.c:2618
+      # 
+      # WTF?
+      #
+      # -Aaron
+      #
+      #def test_throwing_in_js_goes_to_ruby
+      #  func = @runtime.evaluate('function () { throw &quot;foo&quot;; }')
+      #  assert_raise(Johnson::Error) {
+      #    func.call
+      #  }
+      #end
     end
   end
 end</diff>
      <filename>test/johnson/spidermonkey/ruby_land_proxy_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>59807b0f2fbcd193aeec31f8676bffad951fc772</id>
    </parent>
  </parents>
  <author>
    <name>Aaron Patterson</name>
    <email>aaron.patterson@gmail.com</email>
  </author>
  <url>http://github.com/jbarnette/johnson/commit/3ba6b82bee91202cd1d7011bee1b6f1af0996297</url>
  <id>3ba6b82bee91202cd1d7011bee1b6f1af0996297</id>
  <committed-date>2008-05-31T14:00:24-07:00</committed-date>
  <authored-date>2008-05-31T14:00:24-07:00</authored-date>
  <message>using the runtime for exception raising</message>
  <tree>027e6e91454b60f6b1d511a2346b5821c4a3e168</tree>
  <committer>
    <name>Aaron Patterson</name>
    <email>aaron.patterson@gmail.com</email>
  </committer>
</commit>
