Could SJCL.encrypt also throw (I'm not sure - I know decrypt can and will)? If so we should try/catch it and callback with that error