refactored asynchronous calls for request forwarding

async calls now handle all exceptions, build an error message and send the error message back through the chain
would close #25 if we decide that keeping http requests open is better than using separate requests for request and response messages