Request timeout
In a microservices architecture, services are hosted as separate processes to communicate with each other over a network via RPCs. These microservices exchange messages using different protocols in order to consume interfaces exposed by these services. In synchronous communication, the consumer needs to establish a connection with a service to consume its capabilities. The ability to connect to a service to invoke its capabilities is defined as the availability of the service, while the time a service takes to respond to its consumer is known as its responsiveness.
Both availability and responsiveness are important aspects that need to be addressed by the consumer to enable resilient inter-process communication between services. The consumer of the service can choose to wait indefinitely or specify a timeout to wait for the response before it decides the next action. Although specifying a timeout seems like a good choice, it could result in a timeout anti-pattern...