I have a barely working HTTP proxy in client-side-JavaScript here:
https://github.com/ysangkok/browser-http-proxyThis allows you to connect to CORS enabled sites without using the WebSocket proxy. It talks HTTP on the serial port.
I want to add SNI support to tlstunnel so that I can tunnel to google.com by navigating to https://google.com.mydomain/ and having the snitunnel tunnel to http://google.com by reading the bottom-level domain names using SNI.
Using this with browser-http-proxy, it would be possible to tunnel to HTTP sites on a request-based level (making it easier to scale) and without relying on tun/tap on the server. Also it could serve as a fallback for non-CORS enabled hosts.