fix spurious race condition

in some conditions a race condition could happen on buffered channels which was
letting a dead process in the run queue or make it go twice in it. Wih this
change we makes sure to go back in the select process when the receiver got a
value.