* Split socket handling from the
* Removed private methods
* Removed default domains as they aren't needed to use the
* Replaced `pop_messages()` with `find_result()`, `get_results()`, `clear_results()` and `
* Added `execute_async()` to replace `run_async` context
* Handle errors better, Added relevant exceptions
* Persisted domains