public Object[] requestTokenOfType(String name) throws InterruptedException {
		DatabaseTaskResult result = closure.queueAndWaitIndefinitely(new IDatabaseTask() {
			@Override
			public Object[] run(SQLiteConnection database, Object[] callArguments) throws Exception {
				String credName = (String) callArguments[0];
				if (credName.trim().length() == 0)
					throw new IllegalArgumentException("Credential labels must not be empty");
				SQLiteStatement query = database
						.prepare("SELECT 'username', 'token' FROM 'credentials' WHERE 'name' = ? LIMIT 0, 1");
				query.bind(0, credName);
				if (query.step()) {
					Object[] results = new Object[] { query.columnString(0), query.columnString(1) };
					query.dispose();
					return results;
				}
				query.dispose();
				return new Object[] { false };
			}
		}, new Object[] { name });
		return result.results;
	}