Responsible for direct communication with the real world
Must be configured as an interface
It should only serve to communicate and never business logic, domain logic, etc..
public interface IHttpClientGateway
{
// Return json object from server using newtonsoft json
public UniTask<TResponse> RequestAsync<TRequest, TResponse>(string url, TRequest requestData);
}