code: public Promise catchError(CheckedFunction<Throwable> action) {
  		return new Promise(future.handle((data, error) -> {
  			if (error != null) {
  				try {
  					return action.apply(error);
  				} catch (Throwable cause) {
  					return cause;
  				}
  			}
  			return data;
  		}), root);
  	}
docs: The catchError() method returns a Promise and deals with rejected cases
  only. Sample:
  
  <pre>
  Promise.resolve().then(() -&gt; {
  return 123;
  <b>}).catchError(error -&gt; {</b>
  // ...do something, with a return value...
  return 456;
  });
  </pre>
  
  @param action
  error handler of the previous "next" handlers
  
  @return output Promise (allowed return types: Tree, String, int, double,
  byte, float, short, long, boolean, byte[], UUID, Date,
  InetAddress, BigInteger, BigDecimal, and Java Collections with
  these types)