encryption now always returns promises to introduce more async calls