def start(&block)
      raise IOError, "Session already started" if @started
      _start
      if block_given?
        begin
          ret = yield(self)
          resume
          return ret
        ensure
          close
        end
      end
      self
    end
def start(&block)
      raise IOError, "Session already started" if @started
      _start
      if block_given?
        begin
          ret = yield(self)
          resume
          return ret
        ensure
          close
        end
      end
      self
    end
Creates a new HTTP client.
 @param host [String | IO] the host to connect, or IO object.
 @param port [Integer] the port number to connect
 @param config [Hash<Symbol, Object>] the client configuration
 Starts communication.
 If block passed, waits for asynchronous requests and closes the connection after calling the block.