kill workers at disconnect event

Make sure to kill workers when the disconnect event fires. Also kill workers on timeout as a safeguard, if the disconnect event is delayed.