El método emit() en CAP Java es completamente síncrono. Es una llamada de método simple que se ejecuta completamente en el mismo hilo de forma predeterminada. Dado que no veo que estés creando ningún hilo dedicado en tu código, asumo que tu código sigue ejecutándose de forma síncrona.
La forma sugerida en CAP Java para lograr un comportamiento asíncrono sería ejecutar explícitamente el código que deseas ejecutar de forma asíncrona en un hilo dedicado. Puedes hacerlo directamente desde tu método manejador de eventos "onInvokeMany".
Al crear un nuevo hilo, debes tener en cuenta propagar el RequestContext de CAP Java al nuevo hilo, ya que se almacena en un hilo local. Contiene información del inquilino y asegura el mismo contexto en el hilo hijo. Puedes encontrar documentación al respecto aquí: https://cap.cloud.sap/docs/java/request-contexts#threading-requestcontext
Si tienes la dependencia cds-integration-cloudsdk en tu classpath, las abstracciones del inquilino de CAP y Cloud SDK se sincronizan automáticamente. Por lo tanto, el DestinationLoader de Cloud SDK debería comportarse automáticamente de forma consciente del inquilino. Puedes encontrar más información al respecto aquí: https://sap.github.io/cloud-sdk/docs/java/guides/cap-sdk-integration
En cuanto al código de estado: Desafortunadamente, no es posible influir en el código de estado HTTP de una acción exitosa para que sea 202.