Basic example code to reproduce (link to jsBin here as well):
const value = new Cell(10),
sSink = new StreamSink(),
sValue = sSink.snapshot(value, (a_, b_) => ({value: b_}));
const switchedC = Cell.switchC(sValue.map(obj => obj.value).hold(0));
switchedC.listen(v => console.log(v));
Basically, upon a switchC
attempt, in the library, there is an operational attempt to fire the .send()
thus the result of a switch never gets to the dedicated listener. Is this a bug or a feature? 
EDIT: I obviously may be wrong , but the code should definitely work a bit differently, or not?
The other way around with switchS
const sStream = new Sodium.Stream();
const res = Sodium.Cell.switchS(sStream);
res.listen(v => console.log(v));
where underlying csa.sampleNoTrans__()
flattens to the immediate value before listen, throwing an exception. JsBin here