def request(url, **params)
      @client.get(url, **params).tap(&method(:guard_errors!))
    rescue Error
      raise # Not catching in the next block
    rescue StandardError => e
      raise Error, "#{e.class} at #{url}: #{e.message}"
    end
def request(url, **params)
      @client.get(url, **params).tap(&method(:guard_errors!))
    rescue Error
      raise # Not catching in the next block
    rescue StandardError => e
      raise Error, "#{e.class} at #{url}: #{e.message}"
    end
Create an instance of your API descendant.
 Params to pass here correspond to `param`s defined at top level of the DSL, e.g.

 ```ruby
 # if you defined your API like this...
 class MyAPI < TLAW::API
   define do
     param :api_key
     # ....
   end
 end

 # the instance should be created like this:
 api = MyAPI.new(api_key: '<some-api-key>')
 ```

 If the block is passed, it is called with an instance of
 [Faraday::Connection](https://www.rubydoc.info/gems/faraday/Faraday/Connection) object which
 would be used for API requests, allowing to set up some connection configuration:

 ```ruby
 api = MyAPI.new(api_key: '<some-api-key>') { |conn| conn.basic_auth 'login', 'pass' }
 ```

 @yield [Faraday::Connection]
 @private