   merge: (right) ->
     assertEventStream(right)
     left = this
-    new EventStream (sink) ->
+    new EventStream [left, right], (sink) ->
       ends = 0
       smartSink = (obs) -> (unsubBoth) -> obs.subscribe (event) ->
         if event.isEnd()

  describe: -> "<error> #{@error}"

class Observable
  constructor: ->
    @assign = @onValue
  onValue: ->
    f = makeFunctionArgs(arguments)

          sink event unless reply == Bacon.noMore
      sendInit()
      unsub
    new Property [this], subscribe

  fold: (seed, f) =>
    @scan(seed, f).sampledBy(@filter(false).mapEnd().toProperty())
