Hi!
There are at least two reasons not to add such a feature.
The first reason is the async nature of communication. Successful enqueueing of a message doesn't mean that this message will be delivered to the receiver. Even if the message will be delivered (dequeued from the queue), it doesn't mean that it will be handled: the message can be rejected by some overload-protecting scheme, for example.
So, agent B1 has no guarantees that the message will be handled even if send will tell that message is enqueued.
The second reason is the possibility of creating custom mboxes with very different logic. For example, some type of mboxes can store messages even if there are no subscribers yet. Some types can drop messages if they are not dequeued in a specified time window. And so on. Because you don't know what mbox is behind `abstract_message_box_t` interface, the return code from the `send` function doesn't tell you the truth.