public static Task WriteAsync(this Stream stream, byte[] buffer)
        {
#if NETFX_CORE
            return(stream.WriteAsync(buffer, 0, buffer.Length));
#else
            try
            {
                return(Task.Factory.FromAsync((cb, state) => stream.BeginWrite(buffer, 0, buffer.Length, cb, state), ar => stream.EndWrite(ar), null));
            }
            catch (Exception ex)
            {
                return(TaskAsyncHelper.FromError(ex));
            }
#endif
        }
        private async void OnDisconnected()
        {
            await TaskAsyncHelper.Delay(TimeSpan.FromSeconds(5));

            try
            {
                await _connection.Start(_transportFactory());

                // Join JabbR
                await _chat.Invoke("Join", false);
            }
            catch (Exception ex)
            {
                _connection.Trace(TraceLevels.Events, ex.Message);
            }
        }