fix a data race in communicate

Once we pass a request to the requestChan, we must not use it.