title: Can't make chained Promises work in sequential order (one after another) when each chain reads from database
body: <p>I am trying to apply chained Promises to perform a series of Mongoose reads and deletes. </p>
  
  <p>I need the Promise within .next() to start strictly after the previous Promise fully completes execution.</p>
  
  <p>However, the following code does not work as expected:</p>
  
  <pre><code>getRidOfOlderShoutsPromise = () =&gt; {
       readShoutsPromise('BEFORE')
      .then(() =&gt; {
           deleteOlderShoutsPromise();
      })
      .then(() =&gt; {
           readShoutsPromise('AFTER')
      })
      .catch(err =&gt; console.log(err.message));
  }
  
  deleteOlderShoutsPromise = () =&gt; {
      return new Promise ( (resolve, reject) =&gt; {
          console.log("in deleteOlderShouts");
          let d = new Date();
          let TwoMinuteAgo = d - 1000 * 90 ;
          All_Shouts.deleteMany({ dateTime: {$lt: TwoMinuteAgo}}, function(err) {
              if (err) reject();
              console.log("DELETED OLDs at "+d);
              resolve();        
          });
      });
  }
  
  readShoutsPromise = (tex) =&gt; {
      return new Promise( (resolve, reject) =&gt; {
          console.log("in readShoutsPromise -"+tex);
          All_Shouts
          .find({})
          .sort([['dateTime', 'ascending']])
          .exec(function (err, data){
              if (err) reject();
              let d = new Date();
              console.log("shouts "+tex+" delete PROMISE = "+data.length +"; date ="+d);
              resolve(data);
          });    
      });
  }
  </code></pre>
  
  <p>It prints the following ( 'DELETED OLDs at ...' is printed After 'in readShoutsPromise -AFTER' in console:</p>
  
  <pre><code>in readShoutsPromise -BEFORE
  shouts BEFORE delete PROMISE = 18; date =Tue Jun 19 2018 21:13:31 GMT+0500
  in deleteOlderShouts
  in readShoutsPromise -AFTER
  DELETED OLDs at Tue Jun 19 2018 21:13:31 GMT+0500
  shouts AFTER delete PROMISE = 14; date =Tue Jun 19 2018 21:13:31 GMT+0500
  </code></pre>
  
  <p>or</p>
  
  <pre><code>in readShoutsPromise -BEFORE
  shouts BEFORE delete PROMISE = 18; date =Tue Jun 19 2018 21:13:31 GMT+0500
  in deleteOlderShouts
  in readShoutsPromise -AFTER
  shouts AFTER delete PROMISE = 14; date =Tue Jun 19 2018 21:13:31 GMT+0500
  DELETED OLDs at Tue Jun 19 2018 21:13:31 GMT+0500
  </code></pre>
  
  <p>This is not what is expected.</p>
  
  <p>What should do to achieve what I need?</p>