move throwing_sink to its own header
move ptr_sink to its own header
add make_timer which takes an observable for the durations to wait for