Exceptional Asynchronous Session Types: Session Types without Tiers

Simon Fowler, Sam Lindley, J. Garrett Morris, Sara Decova

Research output: Contribution to journalArticlepeer-review


Session types statically guarantee that communication complies with a protocol. However, most accounts of session typing do not account for failure, which means they are of limited use in real applications—especially distributed applications—where failure is pervasive.

We present the first formal integration of asynchronous session types with exception handling in a functional programming language. We define a core calculus which satisfies preservation and progress properties, is deadlock free, confluent, and terminating.

We provide the first implementation of session types with exception handling for a fully-fledged functional programming language, by extending the Links web programming language; our implementation draws on existing work on effect handlers. We illustrate our approach through a running example of two-factor authentication, and a larger example of a session-based chat application where communication occurs over session-typed channels and disconnections are handled gracefully.
Original languageEnglish
Article number28
Number of pages29
JournalProceedings of the ACM on Programming Languages
Issue numberPOPL
Publication statusPublished - 2 Jan 2019


Dive into the research topics of 'Exceptional Asynchronous Session Types: Session Types without Tiers'. Together they form a unique fingerprint.

Cite this