fix runaway setTimeout() calls

fixes #38
test recursive timer