@Override
    public TrackerResponse sendRequest (TrackerRequest request, long time, TimeUnit unit) {
        try {
            URL reqUrl = new URL(getRequestUrl(url.toString(), request));
            URLConnection conn = reqUrl.openConnection();
            conn.setConnectTimeout((int) unit.toMillis(time));
            conn.setReadTimeout((int) (unit.toMillis(time) / 5L));

            try (BencodeInputStream bis = new BencodeInputStream(conn.getInputStream())) {
                return TrackerResponse.fromValue(bis.readValue());
            }

        } catch (MalformedURLException e) {
            return null;
        } catch (IOException e) {
            return null;
        }
    }