According to POSIX, if you call bind on a non-blocking socket, it's allowed to return EINPROGRESS and complete asynchronously. (Reference.)
I checked the source to libuv and Twisted, and as far as I can tell they both call bind on non-blocking sockets without doing anything to handle this error. Neither the Linux or FreeBSD bind(2) man pages mention this as a possible outcome.
Does this actually happen on any real systems? And if so, how do you get notified when the bind has completed?