def persistent(host, timeout: 5)
      options  = {:keep_alive_timeout => timeout}
      p_client = branch default_options.merge(options).with_persistent host
      return p_client unless block_given?
      yield p_client
    ensure
      p_client.close if p_client
    end
def persistent(host, timeout: 5)
      options  = {:keep_alive_timeout => timeout}
      p_client = branch default_options.merge(options).with_persistent host
      return p_client unless block_given?
      yield p_client
    ensure
      p_client.close if p_client
    end
@overload persistent(host, timeout: 5)
   Flags as persistent
   @param  [String] host
   @option [Integer] timeout Keep alive timeout
   @raise  [Request::Error] if Host is invalid
   @return [HTTP::Client] Persistent client
 @overload persistent(host, timeout: 5, &block)
   Executes given block with persistent client and automatically closes
   connection at the end of execution.

   @example

       def keys(users)
         HTTP.persistent("https://github.com") do |http|
           users.map { |u| http.get("/#{u}.keys").to_s }
         end
       end

       # same as

       def keys(users)
         http = HTTP.persistent "https://github.com"
         users.map { |u| http.get("/#{u}.keys").to_s }
       ensure
         http.close if http
       end


   @yieldparam [HTTP::Client] client Persistent client
   @return [Object] result of last expression in the block