Arrow functions () => {} behave differently than regular functions. They don't have their own this; they inherit it from the surrounding scope.
target object with a scoreshootArrow, this.score works because it's a normal functionsetTimeout, a normal function would lose this. Use an arrow function inside setTimeout so it keeps looking at the target object.score to 100 inside the callbackSubmit your code to see test results