code: function between(first, second) {
    return (source) => first.mapTo(source.endWhen(second)).flatten()
  }
docs: source: --a--b----c----d---e-f--g----h---i--j-----
  first:  -------F------------------F---------------
  second: -----------------S-----------------S------
  between
  output: ----------c----d-------------h---i--------