     @_recomputing = false
 
     Tracker._currentComputation.withValue @, =>
-      @_func = Meteor.bindEnvironment(f, null, @)
+      @_func = Meteor.bindEnvironment f, null, @
 
     errored = true
     try
-      @._compute()
+      @_compute()
       errored = false
     finally
       @firstRun = false
-      if errored
-        @stop()
+      @stop() if errored
 
   onInvalidate: (f) ->
-    if typeof f != "function"
-      throw new Error("onInvalidate requires a function")
+    throw new Error "onInvalidate requires a function" unless typeof f is 'function'
 
     f = Tracker._makeNonreactive(Meteor.bindEnvironment(f, null, @))
 

      !!Tracker._currentComputation.get()

class Tracker.Computation
  constructor: (f, @_parent, p)->
    if p != privateObj
      throw new Error("Tracker.Computation constructor is private; use Tracker.autorun")

    @stopped = false
    @invalidated = false

    if not @invalidated
      if not @_recomputing and not @stopped
        queue.queueTask =>
          @_recompute()
          Tracker._postRun()

      @invalidated = true
