         return .unixDomainSocket(address: addr)
     }
 
+    /// Creates a new `SocketAddress` for the given host (which will be resolved) and port.
+    ///
+    /// - parameters:
+    ///       - host: the hostname which should be resolved.
+    ///       - port: the port itself
+    /// - returns: the `SocketAddress` for the host / port pair.
+    /// - throws: a `SocketAddressError.unknown` if we could not resolve the `host`, or `SocketAddressError.unsupported` if the address itself is not supported (yet).
     public static func newAddressResolving(host: String, port: Int32) throws -> SocketAddress {
         var info: UnsafeMutablePointer<addrinfo>?
         
         /* FIXME: this is blocking! */
         if getaddrinfo(host, String(port), nil, &info) != 0 {
-            // TODO: May may be able to return a bit more info to the caller. Let us just keep it simple for now
-            throw SocketAddressError.unknown
+            throw SocketAddressError.unknown(host: host, port: port)
         }
         
         defer {

            throw SocketAddressError.unsupported
        }
    }

}


        }
    }

    /// Creates a new IPV4 `SocketAddress`.
    ///
    /// - parameters:
    ///       - addr: the `sockaddr_in` that holds the ipaddress and port.
    ///       - host: the hostname that resolved to the ipaddress.
    public init(IPv4Address addr: sockaddr_in, host: String) {
        self = .v4(address: addr, host: host)
    }

    /// Creates a new IPV6 `SocketAddress`.
    ///
    /// - parameters:
    ///       - addr: the `sockaddr_in` that holds the ipaddress and port.
    ///       - host: the hostname that resolved to the ipaddress.
    public init(IPv6Address addr: sockaddr_in6, host: String) {
        self = .v6(address: addr, host: host)
    }

    /// Creates a new UDS `SocketAddress`.
    ///
    /// - parameters:
    ///     - path: the path to use for the `SocketAddress`.
    /// - returns: the `SocketAddress` for the given path.
    /// - throws: may throw `SocketAddressError.unixDomainSocketPathTooLong` if the path is too long.
    public static func unixDomainSocketAddress(path: String) throws -> SocketAddress {
        guard path.utf8.count <= 103 else {
            throw SocketAddressError.unixDomainSocketPathTooLong
