implement nonblocking send-recv
add likely_if macros but not use yet
use likely in hopes of minimizing overhead for big msg path