Many asynchronous programs make use of promises (also known as using light-weight threads or an asynchronous monad) to manage concurrency. I've been working on tools to collect trace data from such programs and visualise the results, to help with profiling and debugging. The diagram below shows a trace from a Mirage unikernel reading data from disk in a loop. You should be able to pan around by dr