Chosen method explained in #1011 (closed), required some refactoring to support returning suggestions asynchronously