class Async::HTTP::Internet

def call(method, url, headers = nil, body = nil)

@parameter body [String | Protocol::HTTP::Body] The body to send with the request.
@parameter headers [Hash | Protocol::HTTP::Headers] The headers to send with the request.
@parameter url [String] The URL to request, e.g. `https://www.codeotaku.com`.
@parameter method [String] The request method, e.g. `GET`.

If you provide non-frozen headers, they may be mutated.

Make a request to the internet with the given `method` and `url`.
def call(method, url, headers = nil, body = nil)
	endpoint = Endpoint.parse(url)
	client = self.client_for(endpoint)
	
	body = Body::Buffered.wrap(body)
	headers = ::Protocol::HTTP::Headers[headers]
	
	request = ::Protocol::HTTP::Request.new(endpoint.scheme, endpoint.authority, method, endpoint.path, nil, headers, body)
	
	return client.call(request)
end