class HaloNetClient {

    @Api(2.0)
    public Response request(@NonNull HaloRequest haloRequest) throws HaloNetException {
        Request request = haloRequest.buildOkRequest();
        try {
            Response response = mClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return response;
            } else {
                throw new HaloNetworkExceptionResolver().resolve(response);
            }
        } catch (HaloNetException e) {
            throw e;
        } catch (Exception e) {
            throw new HaloNetworkExceptionResolver().resolve(e, request, HaloUtils.isNetworkConnected(mContext));
        }
    }

    public  HaloNetClient(@NonNull Context context, @NonNull OkHttpClient.Builder clientBuilder, @NonNull HaloEndpointCluster endpoints, boolean disableKitKatCertificate);

}