This code will check validity twice.
I'm also suggesting an other code ;)

Future clone() {
     // ....
     _guessValidUrl(url).then((String validUrl) {
       if (validUrl == null) {
         return new Future.error(...)
       }  else {
         _reallyClone(validUrl);
       }
     }
}