I have the following RxJS code:
let items = Observable.of({
  val: "one",
  type: "string"
}, {
  val: "five",
  type: "string"
}, {
  val: 2,
  type: "integer"
}, {
  val: 10,
  type: "integer"
}, {
  val: 20,
  type: "integer"
});
items
  .groupBy(x => x.type)
  .subscribe(obs => {
    let head = obs.first();
    let tail = obs.skip(1);
    head
      .do(x => console.log('head == ', x))
      .concat(tail)
      .do(x => console.log('tail == ', x))
      .subscribe(x => console.log('sub == ', x));
  });
Here's the output:
head ==  Object {val: "one", type: "string"}
tail ==  Object {val: "one", type: "string"}
sub ==  Object {val: "one", type: "string"}
head ==  Object {val: 2, type: "integer"}
tail ==  Object {val: 2, type: "integer"}
sub ==  Object {val: 2, type: "integer"}
tail ==  Object {val: 20, type: "integer"}
sub ==  Object {val: 20, type: "integer"}
Why is the second item not getting emitted?
Here's a Plunk that demonstrates my problem.