code: func (s *Store) Await(timeout time.Duration) error {
  	stop := time.Now().Add(timeout)
  
  	for {
  		// Get futures
  		s.RLock()
  		futures := s.All()
  		s.RUnlock()
  
  		// return if no futures are left
  		if len(futures) == 0 {
  			return nil
  		}
  
  		// wait for next future to complete
  		err := futures[0].Wait(stop.Sub(time.Now()))
  		if err != nil {
  			return err
  		}
  	}
  }
docs: // Await will wait until all futures have completed and removed or timeout is
  // reached.