function Socket(type, reuseAddr) {
        if (reuseAddr === void 0) { reuseAddr = false; }
        var _this = _super.call(this) || this;
        _this._chromeSocketId = null;
        _this._firefoxSocket = null;
        _this._addressInfo = null;
        if (browserUDP === UDPBrowserTypes.ChromeSocketsUDP) {
            _this._onReceiveChrome = _this._onReceiveChrome.bind(_this);
            _this._onReceiveErrorChrome = _this._onReceiveErrorChrome.bind(_this);
            chrome.sockets.udp.onReceive.addListener(_this._onReceiveChrome);
            chrome.sockets.udp.onReceiveError.addListener(_this._onReceiveErrorChrome);
            chrome.sockets.udp.create({}, function (createInfo) {
                _this._chromeSocketId = createInfo.socketId;
            });
        }
        return _this;
    }
Note that in Node's `dgram`, you're not supposed to ever do
`new dgram.Socket()` (presumably for legacy compatibility reasons). Here
we have no problem including a constructor.