bool tryComplete([FutureOr<dynamic>? value]) { if (!isCompleted) { complete(value); return true; } return false; }