worker pool pattern in go