Yes, using an intermediate system is another approach, and one that we have used in the past as well. On the positive side, you can control the responses, and even add retry logic or queuing. But, it also adds additional latency and increases maintenance, so there are definitely trade-offs. We decided to abandon that in favor of a more direct approach, with the logic embedded directly in the calling code, for performance reasons.