The AES encrypt and decrypt functions can be async on native, as they're already on web.
This moves execution to the module queue, unblocking JS thread.
Left generateKey synchronous because it's not computation heavy and promise overhead is not worth it.