"golang_org/x/net/http/httpguts"
        "golang_org/x/net/http2/hpack"
        "golang_org/x/net/idna"
-       "golang_org/x/net/lex/httplex"
 )
 
 // A list of the possible cipher suite ids. Taken from
                if http2VerboseLogs && fr.logReads {
                        fr.debugReadLoggerf("http2: decoded hpack field %+v", hf)
                }
-               if !httplex.ValidHeaderFieldValue(hf.Value) {
+               if !httpguts.ValidHeaderFieldValue(hf.Value) {
                        invalid = http2headerFieldValueError(hf.Value)
                }
                isPseudo := strings.HasPrefix(hf.Name, ":")
 )
 
 // validWireHeaderFieldName reports whether v is a valid header field
-// name (key). See httplex.ValidHeaderName for the base rules.
+// name (key). See httpguts.ValidHeaderName for the base rules.
 //
 // Further, http2 says:
 //   "Just as in HTTP/1.x, header field names are strings of ASCII
                return false
        }
        for _, r := range v {
-               if !httplex.IsTokenRune(r) {
+               if !httpguts.IsTokenRune(r) {
                        return false
                }
                if 'A' <= r && r <= 'Z' {
 // or its equivalent renamed type in net/http2's h2_bundle.go. Both types
 // may coexist in the same running program.
 func http2isNoCachedConnError(err error) bool {
-       _, ok := err.(interface{ IsHTTP2NoCachedConnError() })
+       _, ok := err.(interface {
+               IsHTTP2NoCachedConnError()
+       })
        return ok
 }
 
        // henc in response to SETTINGS frames?
        cc.henc = hpack.NewEncoder(&cc.hbuf)
 
+       if t.AllowHTTP {
+               cc.nextStreamID = 3
+       }
+
        if cs, ok := c.(http2connectionStater); ok {
                state := cs.ConnectionState()
                cc.tlsState = &state
        for {
                cc.lastActive = time.Now()
                if cc.closed || !cc.canTakeNewRequestLocked() {
+                       if waitingForConn != nil {
+                               close(waitingForConn)
+                       }
                        return http2errClientConnUnusable
                }
                if int64(len(cc.streams))+1 <= int64(cc.maxConcurrentStreams) {
        if host == "" {
                host = req.URL.Host
        }
-       host, err := httplex.PunycodeHostPort(host)
+       host, err := httpguts.PunycodeHostPort(host)
        if err != nil {
                return nil, err
        }
        // potentially pollute our hpack state. (We want to be able to
        // continue to reuse the hpack encoder for future requests)
        for k, vv := range req.Header {
-               if !httplex.ValidHeaderFieldName(k) {
+               if !httpguts.ValidHeaderFieldName(k) {
                        return nil, fmt.Errorf("invalid HTTP header name %q", k)
                }
                for _, v := range vv {
-                       if !httplex.ValidHeaderFieldValue(v) {
+                       if !httpguts.ValidHeaderFieldValue(v) {
                                return nil, fmt.Errorf("invalid HTTP header value %q for header %q", v, k)
                        }
                }
        }
        s.delay = t.expectContinueTimeout()
        if s.delay == 0 ||
-               !httplex.HeaderValuesContainsToken(
+               !httpguts.HeaderValuesContainsToken(
                        cs.req.Header["Expect"],
                        "100-continue") {
                return
 // isConnectionCloseRequest reports whether req should use its own
 // connection for a single request and then close the connection.
 func http2isConnectionCloseRequest(req *Request) bool {
-       return req.Close || httplex.HeaderValuesContainsToken(req.Header["Connection"], "close")
+       return req.Close || httpguts.HeaderValuesContainsToken(req.Header["Connection"], "close")
 }
 
 // writeFramer is implemented by any type that is used to write frames.
                }
                isTE := k == "transfer-encoding"
                for _, v := range vv {
-                       if !httplex.ValidHeaderFieldValue(v) {
+                       if !httpguts.ValidHeaderFieldValue(v) {
                                // TODO: return an error? golang.org/issue/14048
                                // For now just omit it.
                                continue
 
        "time"
 
        "golang_org/x/net/http/httpguts"
-       "golang_org/x/net/lex/httplex"
 )
 
 // Errors used by the HTTP server.
        if len(hosts) > 1 {
                return nil, badRequestError("too many Host headers")
        }
-       if len(hosts) == 1 && !httplex.ValidHostHeader(hosts[0]) {
+       if len(hosts) == 1 && !httpguts.ValidHostHeader(hosts[0]) {
                return nil, badRequestError("malformed Host header")
        }
        for k, vv := range req.Header {
-               if !httplex.ValidHeaderFieldName(k) {
+               if !httpguts.ValidHeaderFieldName(k) {
                        return nil, badRequestError("invalid header name")
                }
                for _, v := range vv {
-                       if !httplex.ValidHeaderFieldValue(v) {
+                       if !httpguts.ValidHeaderFieldValue(v) {
                                return nil, badRequestError("invalid header value")
                        }
                }
 
        "sync/atomic"
        "time"
 
-       "golang_org/x/net/lex/httplex"
+       "golang_org/x/net/http/httpguts"
 )
 
 // DefaultTransport is the default implementation of Transport and is
        isHTTP := scheme == "http" || scheme == "https"
        if isHTTP {
                for k, vv := range req.Header {
-                       if !httplex.ValidHeaderFieldName(k) {
+                       if !httpguts.ValidHeaderFieldName(k) {
                                return nil, fmt.Errorf("net/http: invalid header field name %q", k)
                        }
                        for _, v := range vv {
-                               if !httplex.ValidHeaderFieldValue(v) {
+                               if !httpguts.ValidHeaderFieldValue(v) {
                                        return nil, fmt.Errorf("net/http: invalid header field value %q for key %v", v, k)
                                }
                        }