@startuml
Subscriber -> Publisher: subscribe(Subscriber)

Publisher ->  Subscriber: onSubcribe(Subscription)

Subscriber -> Subscription: request(Long)

Subscription -> Subscriber: onNext(T)
Subscription -> Subscriber: onError(Throwable)
Subscription -> Subscriber: onComplete()

Subscriber -> Subscription: cancel()

@enduml