(cancelMode = CancelMode.CHANNEL
)
main → threads=[Monitor Ctrl-Break, Signal Dispatcher, Finalizer, main @coroutine#1, Reference Handler]
Wrapper[1] → createChannel → <start>
Wrapper[1] → client.observe
Client → observe
Client → observe → thread → handler.onResponse(0)
Wrapper[1] → onResponse → <start>
Wrapper[1] → Configuring channel.invokeOnClose
Wrapper[1] → createChannel → <end>
Wrapper[2] → createChannel → <start>
Wrapper[2] → client.observe
Client → observe
Client → observe → thread → handler.onResponse(0)
Wrapper[2] → onResponse → <start>
Wrapper[2] → Configuring channel.invokeOnClose
Wrapper[2] → createChannel → <end>
main → channel1 → launch (to consume)
main → channel2 → launch (to consume)
Wrapper[1] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 0 → <start>
Wrapper[1] → onResponse → send Response 0 → <start>
main → delaying for 5.5 seconds
main → channel1 → consumeEach
main → channel1 → consumed Response(value=0)
main → channel2 → consumeEach
main → channel2 → consumed Response(value=0)
Wrapper[1] → onResponse → send Response 0 → <end>
Wrapper[2] → onResponse → send Response 0 → <end>
Client → observe → thread → handler.onResponse(1)
Wrapper[1] → onResponse → <start>
Wrapper[1] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Client → observe → thread → handler.onResponse(1)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[1] → onResponse → send Response 1 → <start>
Wrapper[2] → onResponse → send Response 1 → <start>
Client → observe → thread → handler.onResponse(2)
Client → observe → thread → handler.onResponse(2)
Wrapper[2] → onResponse → <start>
Wrapper[1] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 2 → <start>
Wrapper[1] → onResponse → send Response 2 → <start>
Wrapper[1] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Client → observe → thread → handler.onResponse(3)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 3 → <start>
Client → observe → thread → handler.onResponse(3)
Wrapper[1] → onResponse → <start>
Wrapper[1] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[1] → onResponse → send Response 3 → <start>
Client → observe → thread → handler.onResponse(4)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Client → observe → thread → handler.onResponse(4)
Wrapper[1] → onResponse → <start>
Wrapper[2] → onResponse → send Response 4 → <start>
Wrapper[1] → onResponse → send Response 4 → <start>
Wrapper[1] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
main → channel1 → consumed Response(value=1)
main → channel2 → consumed Response(value=1)
Wrapper[1] → onResponse → send Response 1 → <end>
Wrapper[2] → onResponse → send Response 1 → <end>
Client → observe → thread → handler.onResponse(5)
Wrapper[2] → onResponse → <start>
Client → observe → thread → handler.onResponse(5)
Wrapper[1] → onResponse → <start>
Wrapper[2] → onResponse → send Response 5 → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[1] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[1] → onResponse → send Response 5 → <start>
main → Canceling channel 1
Wrapper[1] → channel.invokeOnClose → <start>
Wrapper[1] → channelJob.invokeOnCompletion → <start>
Wrapper[1] → channelJob.invokeOnCompletion → <end>
Client → Runnable → interrupt
Client → observe → InterruptedException
Wrapper[1] → channel.invokeOnClose → <end>
main → joining channel 1's launch
Client → observe → thread → handler.onResponse(6)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 6 → <start>
Client → observe → thread → handler.onResponse(7)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 7 → <start>
Client → observe → thread → handler.onResponse(8)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 8 → <start>
Client → observe → thread → handler.onResponse(9)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 9 → <start>
main → channel2 → consumed Response(value=2)
main → joining channel 2's launch
Wrapper[2] → onResponse → send Response 2 → <end>
Client → observe → thread → handler.onResponse(10)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 10 → <start>
Client → observe → thread → handler.onResponse(11)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 11 → <start>
Client → observe → thread → handler.onResponse(12)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 12 → <start>
Client → observe → thread → handler.onResponse(13)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 13 → <start>
Client → observe → thread → handler.onResponse(14)
Wrapper[2] → onResponse → <start>
Wrapper[2] → onResponse → <end>
Client → observe → thread → Pausing for 1 sec
Wrapper[2] → onResponse → send Response 14 → <start>
...