Add Promise support

Add support for Promises without losing much of the logic(may need to add optional parameter to the get* methods.

Will also contain CI/CD changes and new test structure

Edited by Jochum van der Ploeg