Since select{} won't prioritize, ctx.Done() can sometimes override a pending message on recvc. Loop if recvc has messages instead. Fixes #7340