It this case it might be more convenient to make payNow() async and reorganise it as:
async function payNow() {
const token = await createToken(encodeCard(createCard()));
console.log('Token: ', token);
const chargeResponse = await charge(token);
console.log('Charge ID: ', chargeResponse.id;
}
The code is equivalent, but it is easier to track of what needs to be passed where. When inside of async function, you can always refactor this
asyncFunction().then(result => process(result))
to this
const result = await asyncFunction();
process(result);
I hope this helps! Let me know.