Repository: quarkusio/quarkus
Issue: SimpleQuarkusRestTestCase#testFormMap sometimes fails with NPE

See the run for this PR: https://github.com/quarkusio/quarkus/pull/19463

```
2021-08-17T19:37:29.9850663Z 2021-08-17 19:37:29,957 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-0) HTTP Request to /simple/form-map failed, error id: e3672c38-a3f4-4013-876e-bdeec84f42f8-2: java.lang.NullPointerException
2021-08-17T19:37:29.9853878Z 	at org.jboss.resteasy.reactive.server.injection.ContextProducers.getTarget(ContextProducers.java:108)
2021-08-17T19:37:29.9857459Z 	at org.jboss.resteasy.reactive.server.injection.ContextProducers.resourceInfo(ContextProducers.java:90)
2021-08-17T19:37:29.9861602Z 	at org.jboss.resteasy.reactive.server.injection.ContextProducers_ProducerMethod_resourceInfo_be7f5503a87442251cde9fbc1d406fb350a529f0_Bean.create(ContextProducers_ProducerMethod_resourceInfo_be7f5503a87442251cde9fbc1d406fb350a529f0_Bean.zig:163)
2021-08-17T19:37:29.9866116Z 	at org.jboss.resteasy.reactive.server.injection.ContextProducers_ProducerMethod_resourceInfo_be7f5503a87442251cde9fbc1d406fb350a529f0_Bean.create(ContextProducers_ProducerMethod_resourceInfo_be7f5503a87442251cde9fbc1d406fb350a529f0_Bean.zig:194)
2021-08-17T19:37:29.9869160Z 	at io.quarkus.arc.impl.RequestContext.getIfActive(RequestContext.java:68)
2021-08-17T19:37:29.9870910Z 	at io.quarkus.arc.impl.ClientProxies.getDelegate(ClientProxies.java:33)
2021-08-17T19:37:29.9874045Z 	at org.jboss.resteasy.reactive.server.injection.ContextProducers_ProducerMethod_resourceInfo_be7f5503a87442251cde9fbc1d406fb350a529f0_ClientProxy.arc$delegate(ContextProducers_ProducerMethod_resourceInfo_be7f5503a87442251cde9fbc1d406fb350a529f0_ClientProxy.zig:60)
2021-08-17T19:37:29.9879272Z 	at org.jboss.resteasy.reactive.server.injection.ContextProducers_ProducerMethod_resourceInfo_be7f5503a87442251cde9fbc1d406fb350a529f0_ClientProxy.getResourceMethod(ContextProducers_ProducerMethod_resourceInfo_be7f5503a87442251cde9fbc1d406fb350a529f0_ClientProxy.zig:135)
2021-08-17T19:37:29.9884187Z 	at io.quarkus.resteasy.reactive.server.test.simple.ResourceInfoInjectingFilter.filter(ResourceInfoInjectingFilter.java:19)
2021-08-17T19:37:29.9888838Z 	at org.jboss.resteasy.reactive.server.handlers.ResourceRequestFilterHandler.handle(ResourceRequestFilterHandler.java:40)
2021-08-17T19:37:29.9893747Z 	at org.jboss.resteasy.reactive.server.handlers.ResourceRequestFilterHandler.handle(ResourceRequestFilterHandler.java:8)
2021-08-17T19:37:29.9898151Z 	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:133)
2021-08-17T19:37:29.9971999Z 	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:538)
2021-08-17T19:37:29.9974080Z 	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
2021-08-17T19:37:29.9976066Z 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
2021-08-17T19:37:29.9977965Z 	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
2021-08-17T19:37:29.9980149Z 	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
2021-08-17T19:37:29.9982705Z 	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
2021-08-17T19:37:29.9984394Z 	at java.base/java.lang.Thread.run(Thread.java:829)
```

Changed files:
independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/core/AbstractResteasyReactiveContext.java

diff --git a/independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/core/AbstractResteasyReactiveContext.java b/independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/core/AbstractResteasyReactiveContext.java
index 5af64f58d38..d84d27bb11b 100644
--- a/independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/core/AbstractResteasyReactiveContext.java
+++ b/independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/core/AbstractResteasyReactiveContext.java
@@ -125,6 +125,8 @@ public void run() {
         //if this is a blocking target we don't activate for the initial non-blocking part
         //unless there are pre-mapping filters as these may require CDI
         boolean disasociateRequestScope = false;
+        boolean aborted = false;
+        Executor exec = null;
         try {
             while (position < handlers.length) {
                 int pos = position;
@@ -132,7 +134,6 @@ public void run() {
                 try {
                     handlers[pos].handle((T) this);
                     if (suspended) {
-                        Executor exec = null;
                         synchronized (this) {
                             if (isRequestScopeManagementRequired()) {
                                 if (requestScopeActivated) {
@@ -151,40 +152,29 @@ public void run() {
                                 exec = this.executor;
                                 // prevent future suspensions from re-submitting the task
                                 this.executor = null;
+                                return;
                             } else if (suspended) {
                                 running = false;
                                 processingSuspended = true;
                                 return;
                             }
                         }
-                        if (exec != null) {
-                            //outside sync block
-                            exec.execute(this);
-                            processingSuspended = true;
-                            return;
-                        }
                     }
                 } catch (Throwable t) {
-                    boolean over = handlers == abortHandlerChain;
+                    aborted = handlers == abortHandlerChain;
                     if (t instanceof PreserveTargetException) {
                         handleException(t.getCause(), true);
                     } else {
                         handleException(t);
                     }
-                    if (over) {
-                        running = false;
-                        return;
-                    }
                 }
             }
-            running = false;
         } catch (Throwable t) {
             handleUnrecoverableError(t);
-            running = false;
         } finally {
             // we need to make sure we don't close the underlying stream in the event loop if the task
             // has been offloaded to the executor
-            if (position == handlers.length && !processingSuspended) {
+            if ((position == handlers.length && !processingSuspended) || aborted) {
                 close();
             } else {
                 if (disasociateRequestScope) {
@@ -193,6 +183,13 @@ public void run() {
                 }
                 beginAsyncProcessing();
             }
+            synchronized (this) {
+                running = false;
+            }
+            if (exec != null) {
+                //outside sync block
+                exec.execute(this);
+            }
         }
     }