func Listen(addr string) (Listener, error) {
    u, err := url.Parse(addr)
    if err != nil {
        return nil, fmt.Errorf("listen: invalid address: %s", err)
    }