public long getDelay(TimeUnit tu) {
		long now = System.currentTimeMillis();

		switch (this.status) {
		case NEW:
			return 0; // ask immediatly
		case UNALLOWED:
			return tu.convert(delayDisplacement + (Constants.DISCOVERY_HTTP_HOSTFINDER_INTERVAL_MSEC / 2) - (now - lastQueryTime),
					TimeUnit.MILLISECONDS); // re-ask even faster
		case OK:
			return tu.convert(delayDisplacement + Constants.DISCOVERY_HTTP_HOSTFINDER_INTERVAL_MSEC - (now - lastQueryTime),
					TimeUnit.MILLISECONDS); // re-ask time if everything went ok last time
		case USED:
			return tu.convert(delayDisplacement + Constants.DISCOVERY_HTTP_HOSTFINDER_INTERVAL_MSEC*3 - (now - lastQueryTime),
					TimeUnit.MILLISECONDS); // ask after a longer time
		case NOP300:
			return tu.convert(999, TimeUnit.SECONDS); // ask never
		case OURSELVES:
			return tu.convert(999, TimeUnit.SECONDS); // ask never
		}

		return 0; // ask immediatly

	}