In #420, we add handling for the abort signal's algorithm.
We want to make sure that we manage the entire lifecycle of the abort signal, from addition of the algorithm to removal.
This prevents weird race conditions, dangling callbacks, like what to do if .abort() is called after the promise has settled.