   xhr.onreadystatechange = ->
     if xhr.readyState is 4
       if xhr.status in [0, 200]
-        CoffeeScript.run xhr.responseText, options
+        run = ->
+          CoffeeScript.run xhr.responseText, options
+          null
       else
         throw new Error "Could not load #{url}"
-      callback() if callback
+      run() unless hold
+      callback run
   xhr.send null
 
 # Activate CoffeeScript in the browser by having it compile and evaluate

    "#{js}\n//@ sourceMappingURL=data:application/json;base64,#{btoa unescape encodeURIComponent v3SourceMap}\n//@ sourceURL=coffeescript"

# Load a remote script from the current domain via XHR.
CoffeeScript.load = (url, callback, options = {}) ->
  options.sourceFiles = [url]
  xhr = if window.ActiveXObject
    new window.ActiveXObject('Microsoft.XMLHTTP')

  scripts = window.document.getElementsByTagName 'script'
  coffeetypes = ['text/coffeescript', 'text/literate-coffeescript']
  coffees = (s for s in scripts when s.type in coffeetypes)

  check = ->
    for run, index in coffees
      continue unless run
      return unless run instanceof Function
      coffees[index] = run()

  for script, index in coffees
    do (script, index) ->
      mediatype = script?.type
      return unless mediatype in coffeetypes
      options = {literate: mediatype is coffeetypes[1]}
      if script.src
        CoffeeScript.load script.src,
          (run) ->
            coffees[index] = run
            check()
          options
          true
      else
        options.sourceFiles = ['embedded']
        coffees[index] = ->
          CoffeeScript.run script.innerHTML, options
          null

  check()
  null

# Listen for window load, both in decent browsers and in IE.
