Asynchronous Module Pattern for the browser and CommonJS environments