public ContentResponse send() throws InterruptedException, ExecutionException, TimeoutException, IOException {
        String urlRequest = baseUri + resource;
        Request httpRequest = httpClient
                .newRequest(urlRequest)
                .param("access_token", token);
        for (String key : headers.keySet()) {
            String value = headers.get(key);
            httpRequest.header(key,value);
        }
        for (String key : params.keySet()){
            String value = params.get(key);
            httpRequest.param(key,value);
        }

        httpRequest.method(method);
        if (payload != null)
            httpRequest.content(payload);

        if (token == null){
            token = oAuth.getNewToken();
        }
        ContentResponse response = httpRequest.send();
        if (response.getStatus() == 403){
            token = oAuth.getNewToken();
            response = httpRequest.send();
        }
        return response;
    }