Fix an error in the async-path that led to dropping pods.

Using ix inside this goroutine will cause data race. It is a trap in Go. In general, if you want to send loop counter to a goroutine within the loop body, you need to send it as a parameter. e.g.:

```
for i := range s {
    go func(x int) {
       fmt.Println(x)
    }(i)
}
```

Besides, there're several data races in this package, which is fixed in #348