 
       display_object: (object) ->
         for handler in result_handlers
-          return if handler.call run_context, object
+          return if handler.call @, object
 
       value: (value) -> _lead_context_fn_value: value
 

            "#{ms} ms"

        renderable = immediate_renderable_list_builder $item
        run_context.add_renderable renderable
        nested_context = run_context.create_nested_context
          renderable_list_builder: renderable

        promise = run_context.in_context nested_context, fn
        promise.then ->
          $item.attr 'data-async-status', "loaded in #{duration()}"
        promise.fail ->
          $item.attr 'data-async-status', "failed in #{duration()}"
        promise

    run_context.fns = bind_context_fns run_context, run_context.imported_context_fns
    fns_and_vars = bind_context_fns run_context, run_context.context_fns
    _.each run_context.vars, (vars, name) -> _.extend (fns_and_vars[name] ?= {}), vars
    _.extend fns_and_vars, fns_and_vars.builtins
    _.each fns_and_vars, (mod, name) ->
      if run_context[name]?
        console.warn mod._lead_context_name, 'would overwrite core'
      else
        run_context[name] = mod
    run_context.current_context = run_context

    run_context

  scope = (run_context) ->
    _.extend {}, run_context.fns, run_context.imported_vars

  bind_context_fns = (run_context, fns, name_prefix='') ->
    bind_fn = (name, op) ->
      bound = (args...) ->
        if @imported_context_fns? and @ != run_context.current_context
          # it looks like this is a context, but not the current one
          console.warn 'mismatched run context'
          console.trace()
        # if the function returned a value, unwrap it. otherwise, ignore it
        op.fn.apply(run_context.current_context, args)?._lead_context_fn_value ? ignore
      bound._lead_context_fn = op
      bound._lead_context_name = name
      bound
