org.mozilla.javascript.UnhandledRejectionTracker Maven / Gradle / Ivy
Show all versions of org.apache.servicemix.bundles.rhino
package org.mozilla.javascript;
import java.util.ArrayList;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
/**
* This class is responsible for handling tracking of unhandled Promise rejections. These come up
* when a Promise is either rejected or an exception is thrown and there is no "catch" handler set
* up. There is one of these tracker objects for each Context class.
*
* Different frameworks will choose different ways to handle unhandled rejections. As a result,
* Rhino does nothing by default.
*
*
However, if "trackUnhandledPromiseRejections" is called on the Context object, then Rhino will
* track them in this object. It is the responsibility of the product embedding Rhino to
* periodically check for unhandled rejections in this class and either remove them or terminate the
* script and allow the context and its tracker to be garbage- collected.
*
*
Note that if "trackUnhandledPromiseRejections" is set, and rejections are not handled, then
* Promise objects will accumulate in this object and cause a memory leak.
*/
public class UnhandledRejectionTracker {
private boolean enabled = false;
private static final IdentityHashMap unhandled =
new IdentityHashMap<>(0);
/**
* Iterate through all the rejected promises that have not yet been handled. As each promise is
* handled by this method, it is removed from this tracker and will not appear again. This is
* useful for delivering unhandled promise notifications to users one time via a callback.
*/
public void process(Consumer