If by an asynchronous request you mean non-blocking, then it is not reasonable to be expecting correct status. What asynchronous means is "do this for me, but come right back because I have other things to do". "I'll check back later to see how you did". A blocking request means do "this for me and I will wait until you do it or know why you can't".
It looks like Solaris is simply doing a blocking request, i.e. it's *not* asynchronous.
I did some socket stuff in 1995 but I'm no socket guru.