public Task<Socket> ConnectAsync(IPEndPoint remoteEndPoint) { _connectTcs = new TaskCompletionSource<Socket>(); var task = _connectTcs.Task; Connect(remoteEndPoint); return task; }