https://pr4th4m.github.io/posts/concurrency-patterns-go/