In collaboration with Mr. Viering, Dr. Bejleri, Prof. Ziarek, and Prof. Eugster, I established a formal framework for programming distributed applications capable of handling partial failures, motivated by the non-trivial interplay between failure handling and messaging in asynchronous distributed environments. A type system is built to statically ensure that asynchronous failure handling among multiple applications is free of orphan messages, deadlocks, and starvation. This work was published in the international conference FORTE 2016. I am currently working on handling process crashes. We are modeling multi-party communication in both distributed systems and fault models using session-based calculus (a variant of the π-calculus with session primitives).