internal void CompleteResponse()
{
if (!_responseTcs.Task.IsCompleted)
{
HttpResponseMessage response = GenerateResponse();
// Dispatch, as TrySetResult will synchronously execute the waiters callback and block our Write.
Task.Factory.StartNew(() => _responseTcs.TrySetResult(response));
}
}