<div dir="ltr"><div>This is solvable with decorators or getters.<br><span style="font-family:monospace,monospace"><br></span></div><span style="font-family:monospace,monospace">class Foo {<br></span><div><span style="font-family:monospace,monospace"><br></span></div><div><span style="font-family:monospace,monospace">@cached<br></span></div><div><span style="font-family:monospace,monospace">get method() {<br></span></div><div><span style="font-family:monospace,monospace">    return () => this.foobar();<br></span></div><div><span style="font-family:monospace,monospace">}<br></span></div><span style="font-family:monospace,monospace"><br></span><div><span style="font-family:monospace,monospace">}</span></div><div><span style="font-family:monospace,monospace"><br></span></div><div><span style="font-family:monospace,monospace">class Bar {</span></div><div><span style="font-family:monospace,monospace"><br></span></div><div><span style="font-family:monospace,monospace">@bound</span></div><div><span style="font-family:monospace,monospace">method() {</span></div><div><span style="font-family:monospace,monospace">   return this.foobar();<br></span></div><div><span style="font-family:monospace,monospace">}<br></span></div><div><span style="font-family:monospace,monospace"><br></span></div><div><span style="font-family:monospace,monospace">}</span></div><div><span style="font-family:monospace,monospace"><br></span></div><div><span style="font-family:monospace,monospace"></span>Definitions for decorators @bound and @cached are pretty trivial.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Mar 9, 2019 at 12:42 PM john larson <<a href="mailto:johnlarsondev1@gmail.com">johnlarsondev1@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"><b style="font-size:11pt"><u>Summary of the problem:</u></b><br></p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">“this” keyword in Javascript is context dependent. And this is one of the culprits of most subtle and latent errors in Javascript. Moreover, use of “this” cannot be avoided if we are using classes and trying to reference instance properties.</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">When “this” is used in callback functions or in functions given to forEach as argument, IDEs rightfully cannot raise any design-time errors, giving developers the false sense of security, but we get run-time errors because “this” is undefined.</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">There seem to be two work-arounds:</p><p class="gmail-m_-510229116124742616gmail-m_-8854047637254780782gmail-MsoListParagraphCxSpFirst" style="margin:0in 0in 0.0001pt 0.5in;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">1.<span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman"">      </span>Using arrow functions</p><p class="gmail-m_-510229116124742616gmail-m_-8854047637254780782gmail-MsoListParagraphCxSpLast" style="margin:0in 0in 8pt 0.5in;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">2.<span style="font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman"">      </span>Using .bind(this) syntax</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">Just assuming we forgot to use an arrow function or a .bind(), the IDE will not be able to raise an error and we will encounter the error in run-time.</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"> </p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"><b><u>What I propose:</u></b></p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">I am proposing a new keyword that will be the alternative of "this" and will always point to the instance of the class. The name of the new keyword can be chosen with consensus from the community such that it would minimize/eliminate collision in existing codebases.</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"> </p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">Here is a sample js code:</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"> </p><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">class RequestManager{</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in"> </span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    constructor(){</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        this.successMessage = "Xhr successful.";</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    }</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in"> </span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in"> </span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    makeRequest() {</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        var oReq = new XMLHttpRequest();</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        oReq.addEventListener("load", this.responseHandler);</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        oReq.open("GET", "<a href="http://www.google.com/" target="_blank">www.google.com</a>");</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        oReq.send();</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    }</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in"> </span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    responseHandler() {</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        window.alert(this.successMessage);</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    }</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">}</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in"> </span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">var reqManager = new RequestManager();</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">reqManager.makeRequest();</span></code><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46)"></span></pre><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"> </p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">This piece of code will alert “undefined” because “this” is undefined in the callback function in strict mode.</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">Now let’s assume a new keyword is used insetead of “this” that will always point to the class instance.</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">As per its implementation, as described on <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes" style="color:rgb(5,99,193)" target="_blank">https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes</a>:</p><p class="MsoNormal" style="margin:0in 0in 8pt 0.5in;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"><i><span style="font-family:Arial,sans-serif;color:rgb(51,51,51);letter-spacing:-0.05pt;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">“</span>JavaScript classes, introduced in ECMAScript 2015, are primarily syntactical sugar over JavaScript's existing prototype-based inheritance. The class syntax does not introduce a new object-oriented inheritance model to JavaScript.”</i><i><span style="font-family:Arial,sans-serif;color:rgb(51,51,51);letter-spacing:-0.05pt;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial"></span></i></p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">So with the new keyword introduced, behind the scenes, previous class could be interpreted as a piece of code along the lines of:</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"> </p><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">var RequestManager = function () {</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    var self = this;</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    self.successMessage = "Xhr successful";</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in"> </span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    self.makeRequest = function () {</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        var oReq = new XMLHttpRequest();</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        oReq.addEventListener("load", responseHandler);</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        oReq.open("GET", "<a href="http://www.google.com/" target="_blank">www.google.com</a>");</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        oReq.send();</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    };</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in"> </span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    var responseHandler = function () {</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">        window.alert(self.successMessage);</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">    };</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">};</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">var reqManager = new RequestManager();</span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in"> </span></code></pre><pre style="white-space:pre-wrap;background:rgb(246,248,250) none repeat scroll 0% 0%;margin:0in 0in 0.0001pt;font-size:10pt;font-family:"Courier New""><code style="font-family:"Courier New""><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46);border:1pt none windowtext;padding:0in">reqManager.makeRequest();</span></code><span style="font-size:9pt;font-family:Consolas;color:rgb(36,41,46)"></span></pre><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:10.5pt;line-height:14.98px;font-family:"Segoe UI",sans-serif;color:rgb(36,41,46);background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial"> </span></p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">I believe this way, we would not have to resort to work-arounds for such a fundamental construct of the language and this would ease developers’ lives as someone forgetting to have used an arrow function or the .bind(this) syntax will not be a problem anymore.</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif"> </p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">Best Regards,</p><p class="MsoNormal" style="margin:0in 0in 8pt;line-height:15.6933px;font-size:11pt;font-family:Calibri,sans-serif">John</p></div><div id="gmail-m_-510229116124742616DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br>
<table style="border-top:1px solid rgb(211,212,222)">
        <tbody><tr>
        <td style="width:55px;padding-top:13px"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon" target="_blank"><img alt="" style="width: 46px; height: 29px;" width="46" height="29"></a></td>
                <td style="width:470px;padding-top:12px;color:rgb(65,66,78);font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:18px">Virus-free. <a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link" style="color:rgb(68,83,234)" target="_blank">www.avast.com</a>
                </td>
        </tr>
</tbody></table><a href="#m_-510229116124742616_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"></a></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>