Нам достаточно один раз выяснить, насколько у нас расходится время с GMT. Зная время наступления события по GMT, мы с помощью простейшей арифметической операции узнаем, во сколько оно наступит по нашим часам.
Мы же знаем, что если бы сеть не лагала, мы бы получили сообщение от сервера в 15:54:33. Поскольку щас 15:54:48, то вычтя второе из первого, мы получим величину лага в сети.
Только один вариант приходит в голову. Сам я его не пробовал.
popup.html состоит из одной строчки: <iframe src="iframe.html"></iframe>
В background.html тоже есть такой же ифрейм. Соответственно, то, что в iframe.html, будет жить столько же, сколько и расширение, то есть от старта бразуера до его закрытия. И в нем можно будет сделать chrome.extension.onConnect.addListener(function (port) {})