  We present a system of session types based on adjoint logic which generalize
standard binary session types. Our system allows us to uniformly capture
several new behaviors in the space of asynchronous message-passing
communication, including multicast, where a process sends a single message to
multiple clients, replicable services, which have multiple clients and
replicate themselves on-demand to handle requests from those clients, and
cancellation, where a process discards a channel without communicating along
it. We provide session fidelity and deadlock-freedom results for this system,
from which we then derive a logically justified form of garbage collection.
