private async Task <RequestResult> HandleIncomingRequestAsync(DebugRequest request) { _requestReceived.OnNext(request); await request.WaitForDeferralsAsync(); return(request.Response); }
protected override async Task <RequestResult> SendMessageCoreAsync(object message, RequestOptions options) { var request = new DebugRequest(message, this); if (options.IsResponseRequired) { try { return(await OppositeConnection .HandleIncomingRequestAsync(request) .TimeoutAfter(options.ResponseTimeout)); } catch (TimeoutException) { return(new RequestResult(null, RequestStatus.ResponseTimeout)); } } else { var task = OppositeConnection.HandleIncomingRequestAsync(request); // do not wait for response return(new RequestResult(null, RequestStatus.Success)); } }