0280bd2063
Motivation problem with Throwable#addSuppressed() raised in #9151. This introduced a performance issue when promises are cancelled at a high frequency due to the construction cost of CancellationException at the time that DefaultPromise#cancel() is called. Modifications - Reinstate the prior static CANCELLATION_CAUSE_HOLDER but use it just as a sentinel to indicate cancellation, constructing a new CancellationException only if/when one needs to be explicitly returned/thrown - Subclass CancellationException, overriding fillInStackTrace() to minimize the construction cost in these cases Result Promises are much cheaper to cancel. Fixes #9522.