Make collector concurrent

The shared variable `result` is accessed from multiple goroutine. But I think the `key`-s are mutually different, so it shouldn't cause problem, right?