diff --git a/lib/POE/Wheel/SocketFactory.pm b/lib/POE/Wheel/SocketFactory.pm
index 0504e75..17a97b9 100644
--- a/lib/POE/Wheel/SocketFactory.pm
+++ b/lib/POE/Wheel/SocketFactory.pm
@@ -52,10 +52,9 @@ sub MY_SOCKET_SELECTED () { 12 }
 # least compiles.  Suggested in rt.cpan.org 27250.
 BEGIN {
 
-  eval { Socket->import( qw(getaddrinfo getnameinfo unpack_sockaddr_in6) ) };
+  eval { Socket->import( qw(getaddrinfo unpack_sockaddr_in6) ) };
   if ($@) {
     *getaddrinfo = sub { Carp::confess("Unable to use IPv6: Socket doesn't provide getaddrinfo()") };
-    *getnameinfo = sub { Carp::confess("Unable to use IPv6: Socket doesn't provide getnameinfo()") };
     *unpack_sockaddr_in6 = sub { Carp::confess("Unable to use IPv6: Socket doesn't provide unpack_sockaddr_in6()") };
   }
 
@@ -318,9 +317,10 @@ sub _define_connect_state {
       # INET6 socket stacks tend not to.
       elsif ($domain eq DOM_INET6) {
         if (defined $peer) {
-          ((my $error), $peer_addr, $peer_port) = getnameinfo($peer);
-          if ($error) {
-            warn $error;
+          eval {
+            ($peer_port, $peer_addr) = unpack_sockaddr_in6($peer);
+          };
+          if (length $@) {
             $peer_port = $peer_addr = undef;
           }
         }
@@ -1547,7 +1547,7 @@ listening or connecting.  See below for the differences.
 For INET sockets, C<$_[ARG1]> and C<$_[ARG2]> hold the socket's remote
 address and port, respectively.  The address is packed; see
 L<Socket/inet_ntoa> if a human-readable IPv4 address is needed.
-L<Socket::GetAddrInfo/getnameinfo> provides numeric addresses for IPv4
+L<Socket/inet_ntop> provides numeric addresses for IPv4
 and IPv6 addresses.
 
   sub handle_new_client {