//Use this as a sample promises method. function encryptData() { var passwd = retrievePasswd(); if (crypto.subtle) { crypto.subtle.digest({ name: "SHA-256" }, passwd).then( function (result1) { digestHash = result1; crypto.subtle.importKey("raw", digestHash, { name: "AES-CBC" }, true, ['encrypt']).then( function (result2) { digestKey = result2; salt = window.crypto.getRandomValues(new Uint8Array(16)); var aesAlgorithmEncrypt = { name: "AES-CBC", iv: salt }; crypto.subtle.encrypt(aesAlgorithmEncrypt, digestKey, data).then( function (result3) { ciphertext = result3; } ); } ); }, function (e2) { console.log("Encryption function failed"); } ); } }