code: public <V> V waitFor(final Function<? super WebDriver, V> function) {
  		return newWebDriverWait().until(function);
  	}
docs: Repeatedly applies the current {@link WebDriver} instance to the specified function until
  one of the following occurs:
  <ol>
  <li>the function returns neither null nor false,</li>
  <li>the function throws an unignored exception,</li>
  <li>the timeout expires,
  <li>the current thread is interrupted</li>
  </ol>
  
  @param function
  the function
  @param <V>
  the function's expected return type
  @return the function's return value if the function returned something different from
  null or false before the timeout expired
  @throws TimeoutException
  if the timeout expires.