Как регистрировать запросы HTTP-клиентов Akka

Мне нужно регистрировать запросы клиентов http akka и их ответы. Несмотря на то, что, по-видимому, есть подсказка API для регистрации этих запросов, нет четкой документации о том, как это должно быть сделано. Мой подход состоял в том, чтобы создать зарегистрированный запрос, который прозрачно переноситHttp().singleRequest(req) следующее:

def loggedRequest(req: HttpRequest)
                  (implicit system: ActorSystem, ctx: ExecutionContext, m: Materializer): Future[HttpResponse] = {

  Http().singleRequest(req).map { resp ⇒
    Unmarshal(resp.entity).to[String].foreach{s ⇒
      system.log.info(req.toString)
      system.log.info(resp.toString + "\n" + s)
    }
    resp
  }
}

К сожалению, я должен понять будущее либо с помощью демаршала, либо просто запросивresp.entity.dataBytes для того, чтобы восстановить тело ответа. Я получаю запись, но обещание выполнено, и я больше не могу разархивировать сущность до фактических данных. Рабочее решение будет регистрировать запрос и ответ и проходить этот тестовый пример безIllegalStateException с "обещанием уже выполненным"

describe("Logged rest requests") {

  it("deliver typed responses") {
    val foo = Rest.loggedRequest(Get(s"http://127.0.0.1:9000/some/path"))
    val resp = foo.futureValue(patience)
    resp.status shouldBe StatusCodes.OK
    val res = Unmarshal(resp.entity).to[MyClass].futureValue
  }
}

Идеи приветствуются.

Ответы на вопрос(2)

Ваш ответ на вопрос