Support for optional async

For #1:

Passing `{async: true}` option prevents the current thread from waiting
for a response to appear on the callback channel.