Your movement codes seems a bit wonky. There were tons of times where I let go of a movement key but kept traveling for another quarter of a second. Playing around with it I noticed it was hard to replicate with short key presses, so I guess it's momentum based.