     unbound = false
     unbind = ->
       if unbinder?
-        unbinder() if not unbound
+        unbinder() unless unbound
         unbound = true
     unbinder = binder (args...) ->
       value = eventTransformer(args...)

class Source
  constructor: (@obs, @sync, @subscribe, @lazy = false) ->
    @queue = []
    @subscribe = @obs.subscribeInternal if not @subscribe?
  toString: -> @obs.toString.call(this)
  markEnded: -> @ended = true
  consume: ->

spys = []
registerObs = (obs) ->
  if spys.length
    unless registerObs.running
      try
        registerObs.running = true
        for spy in spys
