 <p>That's because <code>getPerson()</code> returns nothing. You are missing a <code>return</code> keyword. </p> <p>Correct structure is:</p> <pre><code>getPerson() { return addressService.get() .then(...) .then(...); } </code></pre> <hr> <p>Side note: There are also several other typos/minor errors to fix:</p> <pre><code>class PersonService { getPerson() { return addressService.get().then(({address}) =&gt; { // &lt;== Added return at beginning of line return `http://localhost/${address}`; // &lt;== Use ` (backtick), not ', for template strings }).then(url =&gt; { // &lt;== Fixed typo return new es6Promise.Promise(function(resolve, reject) { ApiUtils.get(url, {}, {}, { success: resolve, error: reject }); }); }); // &lt;== Fixed typo } } </code></pre>