code: func HTTP2Listener(addr string, config *tls.Config) (Listener, error) {
  	l := &http2Listener{
  		connChan: make(chan *http2ServerConn, 1024),
  		errChan:  make(chan error, 1),
  	}
  	if config == nil {
  		config = DefaultTLSConfig
  	}
  	server := &http.Server{
  		Addr:      addr,
  		Handler:   http.HandlerFunc(l.handleFunc),
  		TLSConfig: config,
  	}
  	if err := http2.ConfigureServer(server, nil); err != nil {
  		return nil, err
  	}
  	l.server = server
  
  	ln, err := net.Listen("tcp", addr)
  	if err != nil {
  		return nil, err
  	}
  	l.addr = ln.Addr()
  
  	ln = tls.NewListener(tcpKeepAliveListener{ln.(*net.TCPListener)}, config)
  	go func() {
  		err := server.Serve(ln)
  		if err != nil {
  			log.Log("[http2]", err)
  		}
  	}()
  
  	return l, nil
  }
docs: // HTTP2Listener creates a Listener for HTTP2 proxy server.