It suffers the usual effect as seen in eg. Wayland. You think the problem is simple and make a new protocol that's simple. Then you find complexity in the problem and solve it with complexity in the solution. Then your protocol becomes as complex as the one you're replacing. There are reasons S3 does all these things. ACLs, for example? How do you control who can access a file you uploaded? Also, it costs about 20 ti…
With async programming there is little load in forwarding it on, and that’ll be fine at low scale most of us use.
Probably a great option for profile pics to avoid upgrading your postgres instance to a costly one.