@startuml
title Transform synchronous to asynchronous

participant Synchronous
participant Adapter
participant Asynchronous

activate Synchronous

Synchronous -> Adapter: call and block
deactivate Synchronous

activate Adapter

Adapter -> Asynchronous: message with ID
hnote over Adapter : create a waiting thread
Asynchronous -> Adapter: message with ID

Adapter -> Synchronous: return result
deactivate Adapter
activate Synchronous

@enduml