Instead of deferring a close in the filling channel, we'll explicitly keep track of the number of expected channel elements so that we can drain them via for loop rather than range loop.
Instead of deferring a close in the filling channel, we'll explicitly keep track of the number of expected channel elements so that we can drain them via for loop rather than range loop.

This now lets us create multiple goroutines to fill the channel, instead of relying on deferred closure from the filling channel which limits us to 1.
carbocation/go.util