when I subscribe to a community it is first shown as "pending" and only a few minutes later as "joined" - why? What is it waiting for?
It's synchronizing across servers. First it needs to ensure the remote server has your user object, then it tells the remote server to mark your user as subscribed to that community. And these aren't immediate API calls, they're queued up. Sometimes the message queue between servers has some other messages before yours so it may take longer than expected.