Goroutines: The concurrency model we wanted all along
My experience with Goroutines is that eventually you run into the limits of working with them and your code explodes in size. Your    for item := range channel {
        // code goes here
    }

becomes    for {
        var item Item
        var ok bool
        select {
        case <-ctx.Done():
            break
        case item, ok = <-channel:
            if !ok {
                break
            }
        }
 
        // code goes here
    }

(If you have a solution to this pattern, please do share! I would _love_ a better way.)