One option is to push the Idoc to ECC using the soap runtime of ECC for IDocs as per this blog : SOAP for IDOC demystified
What this means is that: you make a synchronous call to ECC and get the Idoc number back from ECC that can then be used to map back to the soap caller. Infact your end to end flow would then be synchronous.
Ofcourse this would not work if you need to get the status of the idoc also sent back to the caller.
Regards
Bhavesh