  Session types using affinity and exception handling mechanisms have been
developed to ensure the communication safety of protocols implemented in
concurrent and distributed programming languages. Nevertheless, current affine
session types are inadequate for specifying real-world asynchronous protocols,
as they are usually imposed by time constraints which enable timeout exceptions
to prevent indefinite blocking while awaiting valid messages. This paper
proposes the first formal integration of affinity, time constraints, timeouts,
and time-failure handling based on multiparty session types for supporting
reliability in asynchronous distributed systems. With this theory, we
statically guarantee that asynchronous timed communication is deadlock-free,
communication safe, while being fearless -- never hindered by timeout errors or
abrupt terminations.
  To implement our theory, we introduce a Rust toolchain designed to facilitate
the implementation of safe affine timed protocols. Our toolchain leverages
generic types and the time library to handle timed communications, integrated
with optional types for affinity. We evaluate our approach by extending diverse
examples from the literature to incorporate time and timeouts, demonstrating
that our solution incurs negligible overhead compared with an untimed
implementation. We also showcase the correctness by construction of our
approach by implementing various real-world use cases, including a remote data
protocol from the Internet of Remote Things domain, as well as protocols from
real-time systems like Android motion sensors and smartwatches.
