recv_until_event: directly return false if buffer full and condition not met