Yeah, the integration and production readiness of their non-core offerings is not perfect. I'm dealing with R2 and another service and you can tell they fell more like... specifically integrated features, rather than fully modular services you can choose to use as you want. Like the workers have possible R2 bindings, but you can't use those in a fetch() call - you have to use S3 compatible endpoint instead.
AWS has its own issues, but the push to have everything talking over API did wonders for the ability to use them as you want.