private static void OnRead(IAsyncResult result) { if (!result.CompletedSynchronously) { BufferedReadStream.ReadAsyncResult asyncState = (BufferedReadStream.ReadAsyncResult)result.AsyncState; try { asyncState.read += asyncState.parent.BaseStream.EndRead(result); asyncState.InvokeCallback(); } catch (Exception exception) { if (asyncState.IsCompleted) { throw; } asyncState.InvokeCallback(exception); } } }