Only thing I'd worry about is what happens when `setTimeout` is called repeatedly if `timeout` is not `null`. If we ensure that doesn't happen should be fine.