code: def stream_via(self, reactor, host, port,
                     socks_endpoint,
                     use_tls=False):
          
          from .endpoints import TorClientEndpoint
          ep = TorClientEndpoint(
              host, port, socks_endpoint,
              tls=use_tls,
              reactor=reactor,
          )
          return TorCircuitEndpoint(reactor, self._torstate, self, ep)
docs: This returns an `IStreamClientEndpoint`_ that will connect to
          the given ``host``, ``port`` via Tor -- and via this
          parciular circuit.
  
          We match the streams up using their source-ports, so even if
          there are many streams in-flight to the same destination they
          will align correctly. For example, to cause a stream to go to
          ``torproject.org:443`` via a particular circuit::
  
              @inlineCallbacks
              def main(reactor):
                  circ = yield torstate.build_circuit()  # lets Tor decide the path
                  yield circ.when_built()
                  tor_ep = circ.stream_via(reactor, 'torproject.org', 443)
                  # 'factory' is for your protocol
                  proto = yield tor_ep.connect(factory)
  
          Note that if you're doing client-side Web requests, you
          probably want to use `treq
          <http://treq.readthedocs.org/en/latest/>`_ or ``Agent``
          directly so call :meth:`txtorcon.Circuit.web_agent` instead.
  
          :param socks_endpoint: should be a Deferred firing a valid
              IStreamClientEndpoint pointing at a Tor SOCKS port (or an
              IStreamClientEndpoint already).
  
          .. _istreamclientendpoint: https://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.IStreamClientEndpoint.html