private async Task CompleteAsync() { await Initialization; try { // Send terminate message & await terminate ack await RequestTerminationAsync(default(CancellationToken)); // Terminate receive proc _receiveProcess.TerminateExecution(); } catch (Exception exc) { _completion.TrySetException(exc); } finally { _underlyingStream.Close(); } _completion.TrySetResult(null); }