The idea is that NIP-02 said: "Every new contact list that gets published overwrites the past ones, so it should contain all entries. Relays and clients SHOULD delete past contact lists as soon as they receive a new one." and I believe something is happening with nostr-tools in this aspect.
Discussion
When you are going to follow somebody, nostr-tools on client-side should wait or confirm that all follows are on list and send the new entry or maybe save it locally....Maybe somebody can find the error on library... I believe it is the library itself ....