UPath('a').joinpath(UPath('s3:///b'))
This call will return PosixUPath('/b'), but
UPath('a').joinuri(UPath('s3:///b'))
will return S3Path('s3:///b').
Maybe in joinpath, we should return just the second path when the second path has protocol (like in joinuri)?