callLater must happens before timeout callback is added to avoid AttributeError