¿Qué efecto tiene el uso de Action.async, ya que Play usa Netty que no bloquea

Como Netty es un servidor sin bloqueo, ¿qué efecto tiene cambiar una acción para usar.async?

def index = Action { ... }

versus

def index = Action.async { ... }

Entiendo que con.async obtendrás unFuture[SimpleResult]. Pero dado que Netty no es bloqueante, ¿Play hará algo similar bajo las sábanas?

¿Qué efecto tendrá esto en el rendimiento / escalabilidad? ¿Es esta una pregunta difícil de responder donde depende de otros factores?

La razón por la que pregunto es que tengo mi propia costumbreAction y quería restablecer el tiempo de espera de cookies para cada solicitud de página, así que estoy haciendo esto, que es unasync llamada:

object MyAction extends ActionBuilder[abc123] {
  def invokeBlock[A](request: Request[A], block: (abc123[A]) => Future[SimpleResult]) = {
    ...
    val result: Future[SimpleResult] = block(new abc123(..., result))
    result.map(_.withCookies(...))
  }
}

La conclusión del fragmento anterior es que estoy usando unFuture[SimpleResult], esto es similar a llamarAction.async pero esto está dentro de mi propia acción?

Quiero entender qué efecto tendrá esto en el diseño de mi aplicación. Parece que solo por la capacidad de configurar mi cookie por solicitud he cambiado de bloqueo a no bloqueo. Pero estoy confundido ya que Netty no es bloqueante, ¿tal vez realmente no he cambiado nada en realidad ya que ya era asíncrono?

¿O simplemente he creado otra llamada asíncrona incrustada en otra?

Esperando que alguien pueda aclarar esto con algunos detalles y cómo o qué efecto tendrá esto en el rendimiento / rendimiento.

Respuestas a la pregunta(2)

Su respuesta a la pregunta