use host in when parse uri
Connection#open (and other async methods) should return promise object by using Promise