improved Mojo::IOLoop::Delay with circular reference protection