latch(equals: (a: any, b: any) => boolean = (a, b) => a === b): ChainableSynthesis {
let cache: any;
this.steps.push(value => {
const shouldEmit = firstCall || !equals(value, cache);
firstCall = false;
cache = value;
return shouldEmit ? value : HaltChainable;
});
return this;
}
public evaluate(value: any) {