1. Futures The results of asynchronous operations are represented by futures which compose to express dependencies between operations.

  2. Services Systems boundaries are represented by asynchronous functions called services. They provide a symmetric and uniform API: the same abstraction represents both clients and servers.

  3. Filters Application-agnostic concerns are encapsulated by filters which compose to build services from multiple independent modules.