You also need to add return before the charge method. If createToken(…).then(…) block is not returning the promise from charge() method, it will not be awaited on.
So, as current code stands, await gets completed promise as soon as createToken(…).then(…) block is executed. And although charge is called, its promise does not get passed from the createToken(…).then(…) to be waited on.