edsko commented on this pull request.
I feel that the discussion on this PR has drowned in discussions of technical details. Before we can address those, I would like to know: what is the goal here? What was wrong with the original code? Why did you feel that this was urgent to fix? What motivates the change from a single `Chan` to a multitude of concurrent variables, thereby requiring `STM`? Why did you need to roll your own thread management, rather than use `async`? At the moment this feels heavily over-engineered to me (that’s not to say it’s wrong, but without a proper problem statement, it’s impossible evaluate). It’s not even clear to me what the original problem was, or even under which ticket this falls. We need context and motivation; the original code was fairly straight-forward and simple, we’d need good reasons to change that. (I’m not talking about `hoist` versus something else; I’m talking broader picture here).
We don’t have much time left and I want to make sure we spend it wisely.