public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback callback, Object state) { CheckError(); LazyAsyncResult userResult = new LazyAsyncResult(this, state, callback); try { _networkStream.BeginRead(buffer, offset, size, new AsyncCallback(AsyncReadCallback), userResult); } catch { CheckError(); throw; } return userResult; }