def start  # :yield: http
      raise IOError, 'HTTP session already opened' if @started
      if block_given?
        begin
          do_start
          return yield(self)
        ensure
          do_finish
        end
      end
      do_start
      self
    end
Opens a TCP connection and HTTP session.

When this method is called with a block, it passes the Net::HTTP
object to the block, and closes the TCP connection and HTTP session
after the block has been executed.

When called with a block, it returns the return value of the
block; otherwise, it returns self.