My understanding is the process goes something like:
- You tell Stardock you want to pre-order the game so you give them your credit card number.
- Stardock goes to your bank and says, "Do they have $40 in their account?"
- The bank looks at your account, sees that you have $40 in there, and then tells Stardock, "Yes."
- At this point the bank makes an assumption that in response to their "Yes" Stardock is going to follow-up with a, "Please charge them $40.", because from their perspective why else would you ask if the person had $40?
- Stardock, however, doesn't tell the bank to charge you $40, instead it places the game on hold for you and then when it is released they will charge you $40.
Stardock is doing things correctly by first checking if you have the money before charging you, otherwise you could end up with an overdraft fee if they just charged you without checking first. Your bank is the one that is setting aside the money, even though no charge is being made. In most cases though, what the bank is doing is also good practice, because by setting aside that $40 (when someone checks to see if it's available) you don't accidentally get hit with an overdraft by purchasing two things at the same time.
In a perfect world, there would be a way for companies like Stardock to check for money but don't put a hold on that money. That way Stardock could ask the bank, "Tell me if they have $40, but don't put a hold on that money right now.". Then the bank would know that a $40 charge will not be immediately following the balance check.
Or I could be totally wrong about how the whole thing works.