I'm running through basic operators at the moment and ran into a difference in the behaviour of the combineLatest operator. I'm not sure if this is a bug or my failure to understand the variation between Signals and SignalProducers.

```
let (numbersSig, numbersOb) = Signal<Int, NoError>.pipe()
let (lettersSig, lettersOb) = Signal<String, NoError>.pipe()
let signal = combineLatest(numbersSig, lettersSig)
signal.observeNext({value in print(value)})

numbersOb.sendNext(1)
lettersOb.sendNext("A")
lettersOb.sendNext("B")

```

Produces:
(1, "A")
(1, "B")

But, if I write what I would consider to be equivalent code using SignalProducers:

```
let numberProducer = SignalProducer<Int, NoError> { (observer, disposable) in
    for v in [1] { observer.sendNext(v) }
}

let letterProducer = SignalProducer<String, NoError> { (observer, disposable) in
    for v in ["A", "B", "C", "D"] { observer.sendNext(v) }
}

let combinedProducer = combineLatest(numberProducer, letterProducer)
combinedProducer.on(next: {value in print(value) }).start()

```

Output:
(1, "D")

I've deliberately left the observer.sendCompleted() out of the SignalProducers as I thought that this would be responsible but that isn't the case. What am I missing?