<spanclass="kd">var</span><spanclass="nx">inherits</span><spanclass="o">=</span><spanclass="nx">require</span><spanclass="p">(</span><spanclass="s1">'inherits'</span><spanclass="p">);</span></div></div></div><divclass="segment"><divclass="comments "><divclass="wrapper"><p>Inherit from the <code>Runner</code> constructor's prototype,
so we can add the correct <code>then</code> method.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="kd">function</span><spanclass="nx">Runner_SQLite3</span><spanclass="p">()</span><spanclass="p">{</span>
<spanclass="nx">Runner_SQLite3</span><spanclass="p">.</span><spanclass="nx">prototype</span><spanclass="p">.</span><spanclass="nx">_beginTransaction</span><spanclass="o">=</span><spanclass="s1">'begin transaction;'</span><spanclass="p">;</span></div></div></div><divclass="segment"><divclass="comments "><divclass="wrapper"><p>Runs the query on the specified connection, providing the bindings and any other necessary prep work.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">Runner_SQLite3</span><spanclass="p">.</span><spanclass="nx">prototype</span><spanclass="p">.</span><spanclass="nx">_query</span><spanclass="o">=</span><spanclass="nx">Promise</span><spanclass="p">.</span><spanclass="nx">method</span><spanclass="p">(</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">obj</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="k">return</span><spanclass="nx">rejecter</span><spanclass="p">(</span><spanclass="k">new</span><spanclass="nb">Error</span><spanclass="p">(</span><spanclass="s1">'Error calling '</span><spanclass="o">+</span><spanclass="nx">callMethod</span><spanclass="o">+</span><spanclass="s1">' on connection.'</span><spanclass="p">));</span>
<spanclass="nx">obj</span><spanclass="p">.</span><spanclass="nx">response</span><spanclass="o">=</span><spanclass="nx">response</span><spanclass="p">;</span></div></div></div><divclass="segment"><divclass="comments "><divclass="wrapper"><p>We need the context here, as it contains
the "this.lastID" or "this.changes"</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">obj</span><spanclass="p">.</span><spanclass="nx">context</span><spanclass="o">=</span><spanclass="k">this</span><spanclass="p">;</span>
<spanclass="p">});</span></div></div></div><divclass="segment"><divclass="comments "><divclass="wrapper"><p>Sounds like .each doesn't work great for</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">Runner_SQLite3</span><spanclass="p">.</span><spanclass="nx">prototype</span><spanclass="p">.</span><spanclass="nx">_stream</span><spanclass="o">=</span><spanclass="nx">Promise</span><spanclass="p">.</span><spanclass="nx">method</span><spanclass="p">(</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">sql</span><spanclass="p">,</span><spanclass="nx">stream</span><spanclass="p">,</span><spanclass="nx">options</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">});</span></div></div></div><divclass="segment"><divclass="comments "><divclass="wrapper"><p>Ensures the response is returned in the same format as other clients.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">Runner_SQLite3</span><spanclass="p">.</span><spanclass="nx">prototype</span><spanclass="p">.</span><spanclass="nx">processResponse</span><spanclass="o">=</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">obj</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">};</span></div></div></div><divclass="segment"><divclass="comments "><divclass="wrapper"><p>Assign the newly extended <code>Runner</code> constructor to the client object.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">client</span><spanclass="p">.</span><spanclass="nx">Runner</span><spanclass="o">=</span><spanclass="nx">Runner_SQLite3</span><spanclass="p">;</span>