Control.Concurrent.Pulse
data
Pulse
newPulse
destroyPulse
withPulse
waitForPulse