I figured it out!
For anyone else that comes across this issue, my problem was that the plugin docs reference the old way of using context.request and context.async. Both of those have been updated since the v4 update. Now they use async context.v3.async and async context.v3.request.
Now if Bubble would just update their docs…
See here for more details: https://manual.bubble.io/account-and-marketplace/building-plugins/updating-to-plugin-api-v4