You would need to look at the server timestamps, rather than what your desktop was showing.
I spend some time analyzing and the opponent won by abandonment

A 37 seconds difference between desktop and server seems a bit high. And it did not say timeout but abandonment.

In a bullet game (2+1) I was thinking my movement and the opponent won by abandonment while I still had 37 seconds in my clock and a better position.
Why did that happen?
You should give the game. If the game has less than 10 moves, you can't spend more than a minute to make your move (based on a 2|1 game) or the system counts it as abandoned.
https://support.chess.com/article/338-how-does-game-abandonment-work

Thanks, Martin. I didn't know that rule (and I really don't agree with that one).
According to the link you gave:
Long move timer
The last, and little known way to time out is if you are still connected, but take a very long time to make one move.
This can only happen before 10 moves are made in the game. After 10 moves, you can use as much time as you like on any move, but before ten moves are made if you use more than 50% of the main time on one move, you will be considered to have abandoned the game.
I was in a complex but promising position before move 10. In a 2 minute game, I should be the one to decide if I want to spend 1 minute in one critical move. I still had 37 seconds on my clock. It really pissed me off to lose in this arbitrary way.
In a bullet game (2+1) I was thinking my movement and the opponent won by abandonment while I still had 37 seconds in my clock and a better position.
Why did that happen?