This whole library wouldn't be necessary if Backbalze implemented a S3 compatible API. They give reasons like being able to load balance on the client for their API (which I do no think is a good reason), but ultimately they just push work from their end to a lot of applications and developers.

Maybe it also has a strategic advantage? Now every product has to announce they support B2 whereas nobody has to announce they support Wasabi, because they support any S3 compatible storage such as AWS S3, Google Cloud Storage or Wasabi.

Object stores unfortunately innovate on their APIs instead of their implementations. I wrote S3Proxy to bridge the gap between S3 applications and a variety of object stores including B2:

https://github.com/gaul/s3proxy