Description
This changeset: http://review.couchbase.org/#/c/49652/3 added try/catch logic and made SendAsync be awaited. By awaiting the request, we ensure that any exceptions thrown will be properly delegated back up the call stack. If we don't do this, the method will block since the Task was never completed.
There is a performance degradation for doing this as opposed to simply making it "fire and forget", since we await the Task completion for essentially a void return type. This can be improved by refactoring the code so that the callback (Completed) is invoked in a failed state if an exception is thrown while executing the request side of the operation.