async Task <TResult> SendAsync <TResult> ( IXipRequestMessage message, CancellationToken cancellationToken = default(CancellationToken)) { TResult result = default(TResult); XipErrorMessage errorResult = null; await SendAsync(message, response => { errorResult = response as XipErrorMessage; if (errorResult == null) { result = (TResult)response; } }, cancellationToken); if (errorResult != null) { Log.Error(TAG, $"SendAsync ({message.GetType ()}) -> " + $"{typeof (TResult)}: {errorResult}"); errorResult.Throw(); } return(result); }