code: private ProjectSettings downloadSettings() {
      try {
        ProjectSettings projectSettings =
            networkExecutor
                .submit(
                    new Callable<ProjectSettings>() {
                      @Override
                      public ProjectSettings call() throws Exception {
                        Client.Connection connection = null;
                        try {
                          connection = client.fetchSettings();
                          Map<String, Object> map = cartographer.fromJson(buffer(connection.is));
                          return ProjectSettings.create(map);
                        } finally {
                          closeQuietly(connection);
                        }
                      }
                    })
                .get();
        projectSettingsCache.set(projectSettings);
        return projectSettings;
      } catch (InterruptedException e) {
        logger.error(e, "Thread interrupted while fetching settings.");
      } catch (ExecutionException e) {
        logger.error(e, "Unable to fetch settings. Retrying in %s ms.", SETTINGS_RETRY_INTERVAL);
      }
      return null;
    }
docs: 1 minute