Contains all the information required to try and establish a bidirectional connection. Only misses specification on how to handle messages, the abstract handler is acquired from incoming Note, may produce multiple connections (e.g., if this produces a server connection) thus triggering the async multiple times.
Implementations should make it safe to establish multiple times, though the semantics of that is unclear.
The returned async, when run, should establish connections with the given callback atomically. That is, no messages should be lost during setup. Similarly, the provider of the callback (the result of incoming) of this method should make sure that the other end of the callback is ready to receive callbacks before running the async.
The returned async, when run, should establish connections with the given callback atomically. That is, no messages should be lost during setup. Similarly, the provider of the callback (the result of incoming) of this method should make sure that the other end of the callback is ready to receive callbacks before running the async.
It is generally not assumed to be safe to run prepare twice (neither running a single async twice, nor running two different returned asyncs). Notably, “server” like implementations may try to bind a specific port, and immediately fail if that is not available.
The async may produce multiple connections and will run receiver for each of them.