Adding a contact requires user to approve adding contact

Whenever a user adds a contact and the contact approves the request, the originator gets a subscriptions request back.

UserA => roster.addContact(UserB)

UserB => roster.grantSubscritpion(UserA)

After UserB grants the submission UserA receives a subscription request, thus

UserA => roster.grantSubscription(UserB)

Is this the correct functionality or should the user be automatically added to UserA’s roster since UserA originated the request.