code: @Override
  	public void eval(String javaScript) {
  		try {
  			// TODO: add configuration for JavaScript executor
  			((JavascriptExecutor) wd).executeScript(javaScript);
  
  			// TODO: catch specific exceptions. If wd is not a JavaScript
  			// executor, don't bother waiting.
  		} catch (Exception e) {
  			long time = System.currentTimeMillis() + 2000;
  			boolean success = false;
  			while (!success && System.currentTimeMillis() < time) {
  				try {
  					((JavascriptExecutor) wd).executeScript(javaScript);
  					success = true;
  				} catch (Exception e2) {
  					try {
  						Thread.sleep(500);
  					} catch (InterruptedException e1) {
  						// TODO: log
  					}
  					e = e2;
  				}
  			}
  
  			if (!success) {
  				// TODO: use specific exception type(s) for eval issues
  				throw new RuntimeException(e);
  			}
  		}
  	}
docs: /*
  (non-Javadoc)
  
  @see org.finra.jtaf.ewd.ExtWebDriver#eval(java.lang.String)
  
  TODO: use {@link org.finra.jtaf.ewd.timer.WaitForConditionTimer}