Benefits

It provides a systematic way to handle the flow of the programming, where you can actually control the manner in which requests are made. For example, you can ensure that request B can be successfully invoked only after request A completes.