fix spurious deadlock in non-blocking unbuffered send/recv