https://medium.com/@nagarjun_nagesh/concurrency-in-go-understanding-mutex-channels-and-their-differences-bbdf5441ce59