> I would add some simple comments, it could be clear for you but at first sight I can't tell what lift is for, I have to read all the code.
It would be easier if you will add some comments and/or examples in all these new functions. Note that is not definitely a blocker, you can do that as second iteration.

Yeah I just didn't bothered to do that because we should just replace this with signal implementation that has all the docs and is completely compatible, also tested in a lot more details.