Should the func return the transfer promise or transfer the funds async and return void?
fn withdraw_all(&mut sel