private Map makeRequest(HttpGet httpGet) {
        InputStream inputStream = null;
        for (int i = 0; i < 15; i++) { // try some times
            try {
                HttpClient httpClient = new DefaultHttpClient();
                HttpResponse response = httpClient.execute(httpGet);
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    inputStream = entity.getContent();
                    String resposneAsString = null;
                    resposneAsString = IOUtils.toString(inputStream);
                    Map result = new Gson().fromJson(resposneAsString, Map.class);
                    Map error = (Map) result.get("error");
                    if (error == null || (Double) error.get("error_code") != ERROR_CODE_TOO_MANY_REQUESTS) {
                        return result;
                    } else {
                        System.out.println("* got too many requests error try sleep two seconds");
                        TimeUnit.SECONDS.sleep(2);
                    }
                }
            } catch (IOException | InterruptedException e) {
                e.printStackTrace();
            } finally {
                try {
                    assert inputStream != null;
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null; //so bad :(
    }