I think this needs to be an isend/irecv/wait pattern since otherwise we can block.