Many validation checks can only be performed at the server side. The following are the examples:
When validating a user registration form, we need to check if the entered username is available
When the user enters a postal address, we might need to ask an external service to verify if the address is correct
The problem with server-side validation checks is that they need to be asynchronous. As a result, they cannot be written in JavaScript as functions that return validation results.
To solve this problem, in this recipe we're going to make a validator that uses the continuation-passing style. The example has a username input field that is validated against the server. The server checks if the username is available for registration or already occupied by another user.