cancel execution on triggered abort signal despite hanging async resolvers (#4267)
Prior to this pull request, cancellation worked by checking the abort signal status during execution, and throwing the reason if the abort signal has been triggered. This fails if an asynchronous resolver hangs.
This pull request changes the cancellation method to wrap promises returned by resolvers so that they immediately reject on cancellation.