void (@Nullable StreamChain chain, @Nullable TracingResult result, @Nullable String error, @Nullable FailureReason errorReason) { try { if (error != null) { assertNotNull(errorReason); assertNotNull(chain); handleError(chain, error, errorReason); } else { assertNull(errorReason); handleSuccess(chain, result, isResultNull); } } catch (Throwable t) { println("Exception caught: " + t + ", " + t.getMessage(), ProcessOutputTypes.SYSTEM); } finally { resume(); } }